Java爬虫框架,WebMagic 0.4.0 发布

jopen 10年前

webmagic采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线程抓取,分布式抓取,并支持自动重试、自定义UA/cookie等功能。

Java爬虫框架,WebMagic 0.4.0 发布

webmagic包含强大的页面抽取功能,开发者可以便捷的使用css selector、xpath和正则表达式进行链接和内容的提取,支持多个选择器链式调用。

此次更新主要对下载模块进行了优化,并增加了同步下载的API,同时对代码进行了一些重构。

一、Downloader部分更新:

  1. 升级HttpClient到4.3.1,重写了HttpClientDownloader的代码 #32
  2. 在http请求中主动开启gzip,降低传输开销 #31
  3. 修复0.3.2及之前版本连接池不生效的问题 #30,使用HttpClient 4.3.1新的连接池机制,实现连接复用功能。

经测试,下载速度可达到90%左右的提升。测试代码:Kr36NewsModel.java 。

二、增加同步抓取的API,对于小规模的抓取任务更方便:

 

1 OOSpider ooSpider = OOSpider.create(Site.me().setSleepTime(100), BaiduBaike.class);
2 BaiduBaike baike = ooSpider.get("http://baike.baidu.com/search/word?word=httpclient&pic=1&sug=1&enc=utf8");
3 System.out.println(baike);

三、Site(配置类)增加更多配置项:

  1. 支持Http代理: Site.setHttpProxy #22 。
  2. 支持自定义所有Http头:Site.addHeader #27 。
  3. 支持开启和关闭gzip:Site.setUseGzip(false) 。
  4. Site.addStartUrl移到了Spider.addUrl,因为作者认为startUrl应该是Spider的属性,而不是Site的属性。

 四、Spider(主逻辑)进行了一些重构:

  1. 重写了多线程逻辑,代码更加易懂了,同时修复了一些线程安全问题。
  2. 引入了Google Guava API,让代码更简洁。
  3. 增加配置Spider.setSpawnUrl(false),此选项为false时,只下载给定的url,不下载任何新发现的url。
  4. 可以给初始url中附带更多信息:Spider.addRequest #29

另外webmagic邮件组成立了,欢迎加入:https://groups.google.com/forum/#!forum/webmagic-java