Java爬虫(二)Java爬虫框架
http://webmagic.io/
http://webmagic.io/docs/zh/
这个文档写的十分详细,简单易上手。
在这个框架里,我比较喜欢的是:
一、使用Selectable抽取元素
Selectable
相关的抽取元素链式API是WebMagic的一个核心功能。使用Selectable接口,你可以直接完成页面元素的链式抽取,也无需去关心抽取的细节。
在刚才的例子中可以看到,page.getHtml()返回的是一个Html
对象,它实现了Selectable
接口。这个接口包含一些重要的方法,我将它分为两类:抽取部分和获取结果部分。
这样在我们想要抓取指定数据时,更加的方便快捷,而无需过多的关心细节问题;
二、使用Pipeline保存结果
好了,爬虫编写完成,现在我们可能还有一个问题:我如果想把抓取的结果保存下来,要怎么做呢?WebMagic用于保存结果的组件叫做Pipeline
。例如我们通过“控制台输出结果”这件事也是通过一个内置的Pipeline完成的,它叫做ConsolePipeline
。那么,我现在想要把结果用Json的格式保存下来,怎么做呢?我只需要将Pipeline的实现换成"JsonFilePipeline"就可以了。
public static void main(String[] args) {
Spider.create(new GithubRepoPageProcessor())
//从"https://github.com/code4craft"开始抓
.addUrl("https://github.com/code4craft")
.addPipeline(new JsonFilePipeline("D:\\webmagic\\"))
//开启5个线程抓取
.thread(5)
//启动爬虫
.run();
}
这样子下载下来的文件就会保存在D盘的webmagic目录中了;
三、抓取前端渲染的页面
爬虫抓取被渲染过的页面源码和我们在浏览器开发者模式里看的源码往往不一样,所以会导致我们抓不到想要的渲染后的页面。
WebMagic提供两种办法:
一、利用Selenium,我试过这个,当使用这个的时候,你的电脑会打开浏览器(看你下载的是哪一款驱动),然后执行相应操作(ps:Selenium大家也可以多研究研究,我感觉这个的用途也很广,模拟人的操作使用浏览器,可以用它做一些简单枯燥的重复动作,但是我感觉这个的执行效率比较低);
二、手动构造URL,直接得到JSON数据(具体可以看WebMagic的文档)
http://webmagic.io/docs/zh/posts/chx-cases/js-render-page.html
写在后面:
WebMagic还有很多功能,大家可以自行阅读它的文档,简单易上手。如果你会用这个框架了,你将是一个灵活的爬虫哈哈哈哈哈~~~~~
这这里我就不写Demo放上来了,如果大家有不懂的,或者想和我交流学习的,可以私聊我,我会尽我所能的帮助大家,也会和大家交流学习的。