Java爬虫框架,WebMagic 0.4.0 发布
jopen 11年前
webmagic采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线程抓取,分布式抓取,并支持自动重试、自定义UA/cookie等功能。
此次更新主要对下载模块进行了优化,并增加了同步下载的API,同时对代码进行了一些重构。
一、Downloader部分更新:
- 升级HttpClient到4.3.1,重写了HttpClientDownloader的代码 #32。
- 在http请求中主动开启gzip,降低传输开销 #31。
-
修复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. "http://baike.baidu.com/search/word?word=httpclient&pic=1&sug=1&enc=utf8" ); |
3 | System.out.println(baike); |
三、Site(配置类)增加更多配置项:
- 支持Http代理: Site.setHttpProxy #22 。
- 支持自定义所有Http头:Site.addHeader #27 。
- 支持开启和关闭gzip:Site.setUseGzip(false) 。
- Site.addStartUrl移到了Spider.addUrl,因为作者认为startUrl应该是Spider的属性,而不是Site的属性。
四、Spider(主逻辑)进行了一些重构:
- 重写了多线程逻辑,代码更加易懂了,同时修复了一些线程安全问题。
- 引入了Google Guava API,让代码更简洁。
- 增加配置Spider.setSpawnUrl(false),此选项为false时,只下载给定的url,不下载任何新发现的url。
- 可以给初始url中附带更多信息:Spider.addRequest #29
另外webmagic邮件组成立了,欢迎加入:https://groups.google.com/forum/#!forum/webmagic-java