webmagic 0.3.0 发布,高性能Java爬虫框架
- - 开源中国社区最新新闻webmagic的是一个无须配置、便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫. 之前两个版本的主题分别是"灵活","方便",而此次更新的主题是"性能". 重写了XPath解析器,替换了HtmlCleaner. 这个XPath解析器(我另外建立了一个项目 Xsoup)基于Jsoup完成,比HtmlCleaner性能好一倍以上,同时有更友好的错误提示.
webmagic的是一个无须配置、便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫。
之前两个版本的主题分别是"灵活","方便",而此次更新的主题是"性能"。
主要更新内容:
1. 重写了XPath解析器,替换了HtmlCleaner。这个XPath解析器(我另外建立了一个项目 Xsoup)基于Jsoup完成,比HtmlCleaner性能好一倍以上,同时有更友好的错误提示。
2. 使用Xsoup后,结合webmagic内部的一些优化,抽取单页面的时间从7~9ms降低到了0.4ms,提高了20倍,在多线程下会有很大的效率提高。
3. Xsoup的XPath兼容大部分XPath 1.0的语法,同时加入了一些便于页面抽取的函数扩展,例如 //div[@class='BlogContent']/tidyText()会去掉所有HTML标签,并进行智能换行;//a/regex(@href,'.*blog.*')支持在结果的属性里使用正则表达式进行进一步抽取。后续会根据大家的反馈增加一些实用的语法和功能。
4. Xsoup目前大部分XPath语法均测试通过,如果在使用中出现问题,可以使用Spider.xsoupOff()关闭xsoup,重新使用HtmlCleaner,并提出反馈。
5. cycleRetryTimes,该机制会将下载失败的url重新放入队列重试,直到达到重试次数,以保证不因为某些网络原因漏抓页面。默认不打开,可通过site.setCycleRetryTimes设置此项,目前只支持HttpClientDownloader和RedisScheduler。