Android Jsoup爬虫
最近项目中需要用到一些数据,苦于没有数据源。在网上各种搜罗爬虫的第三方工具:火车头、八爪鱼这些都不太理想,偶然间发现github上有一个java开源的项目“jsoup”利用java代码去操作网页的元素,感觉可行。今天就给大家带来在android中如何使用jsoup爬虫的教程。
1.新建android工程,导入jsoup包
1.首先将jsoup的包下载下来,他是以jar包的形式提供的,也可以使用依赖的方式(这里我是用jar的形式)。下载地址:https://jsoup.org/download
2.将下载好的jar包放入工程的libs文件夹下
3.将jar包依赖到工程中
2.开始使用
我们来到我们新建的MainActivity中开始编写代码,这里我以爬我自己的一篇博客为例。
Jsoup.connect("https://blog.csdn.net/qq_36050563/article/details/109710952")
通过connect(‘爬取的网址’)与此地址建立起连接。
Document document = Jsoup.connect("https://blog.csdn.net/qq_36050563/article/details/109710952").get();
通过get方式获取Doucment对象,如果你学习过前端对整个文档对象一定不陌生,有了他就可以操作整个html页面的元素了。注意这里会有异常tye-catch一下就好。
3.爬取
我要爬取的网页是整个样子的
1.比如我想爬取这个网页的标题,先要在浏览器中F12审查元素,点击左上角的小箭头指向这个标题
这里的h1就是标题,他有class 和 id 有这两个我们就能很好的找到这个标题了,当然通过’‘h1’'标签也能找到。
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(){
@Override
public void run() {
try {
Document document = Jsoup.connect("https://blog.csdn.net/qq_36050563/article/details/109710952").get();
Element title = document.getElementById("articleContentId");
Log.e(TAG, "run: "+title.text());
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
}
这样标题我们就拿到了。
如果用document.getElementsByClass(“title-article”)的话返回的是一个数组,你需要再取到第一个元素才行。包括document.getElemengsByTag(“h1”)标签选择器也是一样的。
4.高级爬取
有人可能会问如果我爬取的是一个列表,每个列表的详情需要点进去才能获取到该如何是好?
这里给点小的提示,那就通过类选择器或者标签选择器获取这个外面的列表。一般这种列表都是a标签,循环拿到他的href属性中的链接地址,通过connect(‘爬取的网址’)与此地址建立起连接就可以了。
5.结语
好了今天的android版本的爬虫就讲到这里,下一篇带大家实现高级爬虫功能+greendao数据库实现本地存储。