app第三阶段冲刺第一天—— jsoup 3

作者:@kuaiquxie
作者的github:https://github.com/bitebita
本文为作者原创,如需转载,请注明出处:https://www.cnblogs.com/dzwj/p/16295081.html


 

今天还是先把之前没有弄完的jsoup爬取网页写写,今天写写适配器,以及相关的主活动界面的编写

复制代码
package com.example.crawler.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.crawler.R;
import com.example.crawler.Tools.Article;

import java.util.List;

public class NewsAdapter extends BaseAdapter {

    private List<Article> newsList;
    private View view;
    private Context mContext;
    private ViewHolder viewHolder;

    public NewsAdapter(Context mContext,List<Article> obj){
        this.mContext = mContext;
        this.newsList = obj;
    }

    @Override
    public int getCount() {
        return newsList.size();
    }

    @Override
    public Object getItem(int position) {return newsList.get(position);}


    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {//缓存convertView的方式
            view = LayoutInflater.from(mContext).inflate(R.layout.list_item, null);
            viewHolder = new ViewHolder();
            viewHolder.newsTitle = (TextView) view.findViewById(R.id.title);
            viewHolder.newsAuthor = (TextView)view.findViewById(R.id.author);
            viewHolder.newsImgUrl = (TextView) view.findViewById(R.id.image);
            viewHolder.newsContext = (TextView) view.findViewById(R.id.context);
            viewHolder.newsArticleUrl = (TextView) view.findViewById(R.id.articleUrl);
            view.setTag(viewHolder);
        } else {
            view = convertView;
            viewHolder = (ViewHolder) view.getTag();
        }
        viewHolder.newsTitle.setText(newsList.get(position).getTitle());
        viewHolder.newsAuthor.setText(newsList.get(position).getAuthor());
        viewHolder.newsImgUrl.setText(newsList.get(position).getImgUrl());
        viewHolder.newsContext.setText(newsList.get(position).getContext());
        viewHolder.newsArticleUrl.setText(newsList.get(position).getArticleUrl());
        return view;
    }

    class ViewHolder{
        TextView newsTitle;
        TextView newsAuthor;
        TextView newsImgUrl;
        TextView newsContext;
        TextView newsArticleUrl;

    }

}
复制代码

 

 

复制代码
package com.example.crawler;

import android.os.Debug;
import android.os.Handler;
import android.os.Message;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.example.crawler.Tools.Article;
import com.example.crawler.Tools.GetData;
import com.example.crawler.Tools.OkHttpUtils;
import com.example.crawler.adapter.NewsAdapter;

import java.util.ArrayList;
import java.util.List;

//MainActivity 线程测试 OkHttpUtils /GetData  功能,并展示数据
public class MainActivity<handler> extends AppCompatActivity {

    private ListView listView;
    private List<Article> mData;
    private Handler handler;

    final static String url = "https://www.smzdm.com/";
    final static String TAG = "MainActivity";

    /*handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            Log.i(TAG, "handleMessage: "+ "爬结束");

            switch (msg.what) {
                case 1:
                    Log.i(TAG, "handleMessage: "+ "开始展示数据");
                    ArrayList<Article> articles = (ArrayList<Article>)msg.obj;
                    Log.i(TAG, "handleMessage:articles.size() "+ articles.size());

                    for (Article item:articles) {
                        Log.i(TAG, "handleMessage: "+ item.toString());
                    }
                    //break;
                case 2:
                    NewsAdapter newAdapter = new NewsAdapter(MainActivity.this,mData);
                    listView.setAdapter(newAdapter);
                default:
                    break;
            }
        }
    };*/

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Test();

        /*listView = (ListView) findViewById(R.id.lv_mytest);
        mData = new ArrayList<>();*/

        handler = new Handler(){
            @Override
            public void handleMessage(Message msg) {

                Log.i(TAG, "handleMessage: "+ "爬结束");

                switch (msg.what) {
                    case 1:
                        Log.i(TAG, "handleMessage: "+ "开始展示数据");
                        ArrayList<Article> articles = (ArrayList<Article>)msg.obj;
                        Log.i(TAG, "handleMessage:articles.size() "+ articles.size());

                        for (Article item:articles) {
                            Log.i(TAG, "handleMessage: "+ item.toString());
                        }
                        break;
                    /*case 2:
                        NewsAdapter newAdapter = new NewsAdapter(MainActivity.this,mData);
                        listView.setAdapter(newAdapter);*/
                    default:
                        break;
                }
            }
        };



    }
    private void Test(){
        new Thread(){
            @Override
            public void run(){
                String html = OkHttpUtils.OkGetArt(url);
                ArrayList<Article> articles = GetData.spiderArticle(html);
                //发送信息给handler用于更新UI界面
                Message message = handler.obtainMessage();
                message.what = 1;
                /*message.what = 2;*/
                message.obj = articles;
                handler.sendMessage(message);
            }
        }.start();
    }
}
复制代码

 

那么这个jsoup就写完了,既然知道还可以用python来爬取网页的数据,明天查查,用python来爬取网页数据

 

posted @   kuaiquxie  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示