分享一个自己写的爬虫框架
之前写过一年的垂直爬虫(抓博客什么的),对于各种重复代码很厌倦,后来参考了据说是最优秀的爬虫框架scrapy,写了一个Java版的框架webmagic。
自己用着还是挺顺手的,底层封装了HttpClient、Jsoup、HtmlCleaner,支持多线程,也包括url去重、重试、编码判断什么的。希望能帮到把各位自己手写爬虫代码的同学。
代码不长,自认为模块化的也挺清晰,如果对爬虫感兴趣的可以看一看。
以下是使用webmagic抓取某个iteye博客的所有文章,并提取标题和正文的爬虫代码:
public class IteyeBlogProcessor implements PageProcessor { private Site site; @Override public void process(Page page) { page.addTargetRequests(page.getHtml().links().regex(".*yanghaoli\\.iteye\\.com/blog/\\d+").all()); page.putField("title",page.getHtml().xpath("//title").toString()); //自动抽取正文,用到了readability page.putField("content",page.getHtml().smartContent().toString()); } @Override public Site getSite() { if (site == null) { site = Site.me().setDomain("yanghaoli.iteye.com").addStartUrl("http://yanghaoli.iteye.com/"). .setSleepTime(100).setRetryTimes(3); } return site; } public static void main(String[] args) { Spider.create(new IteyeBlogProcessor()).thread(5).pipeline(new FilePipeline()).run(); }}