android爬虫

爬虫,你最先想到用什么爬?Python?Java?方式有多种,今天讲讲android的一个爬虫框架Jsoup.按照官网介绍->jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
有兴趣的朋友可以去探讨一下它的实现原理,如果你懂一点js,看起来可能会更舒服些。

这里是爬的“百思不得姐”的图片数据,下面是成功爬取的数据,开车,锁好门~~~

这里写图片描述
这里写图片描述
jsoup的导入

implementation ‘org.jsoup:jsoup:1.11.3’

jsoup的使用

1、获取Html
jsoup提供两种网络请求,get和post,使用代码也及其简单,我们首先爬取糗事百科首页的HTML。注意:由于是网络请求操作,必须放在子线程中运行,否则4.4以上的版本会报错
①post方式

Document doc = Jsoup.connect(“http://www.budejie.com/1“)
.data(“query”, “Java”)
.userAgent(“Mozilla”)
.cookie(“auth”, “token”)
.timeout(3000)
.post();

参数介绍
1)connect:设置连接的Url
2)data:设置post的键值对数据
3)userAgent:设置用户代理(请求头的东西,可以判断你是PC还是Mobile端)
4)cookie:设置缓存
5)timeout:设置请求超时
6)post:发送post请求

②get方式

new Thread() {
@Override
public void run() {
super.run();
try {
Document doc = Jsoup.connect(“http://www.budejie.com/1“).get();
}
catch{
//异常
}
}
}.start();

2、解析HTML元素(jsoup封装的比较好,直接找到父容器div的class名字,就可以一步一步往下走,不管div上面还有没有div,直接找到class的名字就可以)
这里写图片描述
这个是不得姐的首页,找到“j-r-list-c-desc”这个div之后,获取到a标签里面的href的链接跳转到详情页,就是下图
这里写图片描述
很明显有2个div是装载了标题和图片的,直接解析即可。
解析完HTML代码之后,就可以在android端利用jsoup爬取数据了。代码很简单,这里使用的是get请求方式。这里封装了实体类接收爬到的数据显示在手机上

**主要代码**
        new Thread() {
            @Override
            public void run() {
                super.run();
                try {
                    /**
                     * Document:相当于一个Html文件
                       Elements:相当于一个标签的集合
                       Element:相当于一个标签
                     */
                    for (int k = 0; k < 5; k++) {//爬取5页内容
                        Document doc = Jsoup.connect("http://www.budejie.com/" + k).get();
                        Elements els = doc.select("div.j-r-list-c-desc");

                        for (int i = 0; i < els.size(); i++) {
                            Elements el = els.get(i).select("a");

                            String href = el.attr("href");
//                            拿到这条段子的详情链接
//                            Log.e("链接", href);

                            Document doc_detail = Jsoup.connect("http://www.budejie.com/" + href).get();
                            Elements els_detail = doc_detail.select(".j-r-list-c-desc");
                            Log.e("內容", els_detail.text());
//
                            Elements els_pic = doc_detail.select(".j-r-list-c-img img[src$=jpg]");
                            if (!els_pic.isEmpty()) {
                                String pic = els_pic.attr("src");
                                Log.e("图片连接", "" + pic);
                            } else {
                                Log.e("图片连接", "无");
                            }

//                            Content content = new Content(els_detail.text(), els_pic.attr("src"));
//                            content.save();
                        }
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();

至此,jsoup爬虫就已经完成了,使用jsoup比较简单,关键的是解析HTML代码的时候,一个一个节点的去找,分析这里存在一点困难,总体还是简单的。还没试过Python爬虫,有时间可以整一个。

欢迎扫码关注我的公众号,获取更多干货分享
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值