webmagic 0.1.0版本发布,Java垂直爬虫框架

黄亿华
 黄亿华
发布于 2013年07月25日
收藏 78

第一个正式版本。
修改了若干API,使得可扩展性更强,重写了Pipeline接口,将抽取结果集包装到ResultItems对象,便于逻辑分离。
增加下载的重试机制,支持gzip,支持自定义UA/cookie。
增加多线程抓取功能,只需在初始化的时候指定线程数即可。
增加jquery形式的CSS Selector API,可以通过page.getHtml().$("div.body")形式抽取元素。
完善了文档,架构说明:webmagic的设计机制及原理-如何开发一个Java爬虫,Javadoc:http://code4craft.github.io/webmagic/docs

webmagic的是一个无须配置、便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫。以下是爬取oschina博客的一段代码:

Spider.create(new SimplePageProcessor("http://my.oschina.net/",
"http://my.oschina.net/*/blog/*")).thread(5).run();

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

String extractResult = Html.create(html).$("div.body")
.xpath("//a/@href").regex(".*blog.*").toString();
本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:webmagic 0.1.0版本发布,Java垂直爬虫框架
加载中

最新评论(13

黄亿华
黄亿华

引用来自“ywooer”的评论

引用来自“黄亿华”的评论

引用来自“ywooer”的评论

@黄亿华 不错不错,终于见着正式版了。先顶一下,再提个问题,关于页面的ajax内容什么时候能提供一个解决方案啊。

现在只能自己拼ajax的url,再解析json。正在研究Selenium,考虑内嵌一个浏览器做渲染。

内嵌一个浏览器的想法不错,但是对性能的影响大不大?我的知识太少了,回头自己也研究研究,要是有什么拙见还得请您指教指教呢。^_^

性能影响肯定是有的,毕竟一个浏览器渲染一个页面,还要加载额外的js、css、图片等元素。我刚才做了测试,渲染http://huaban.com100次,耗时是263秒,平均2.63秒,我觉得倒是可以接受。代码我完成了,提交到了http://t.cn/zQMx3JY,目前是试用版,需要在http://code.google.com/p/chromedriver/downloads/list下载一个对应版本的driver,并把路径在初始化的时候填进去。Selenium也是第一次使用,不是很熟。
米多范er
米多范er

引用来自“黄亿华”的评论

引用来自“ywooer”的评论

@黄亿华 不错不错,终于见着正式版了。先顶一下,再提个问题,关于页面的ajax内容什么时候能提供一个解决方案啊。

现在只能自己拼ajax的url,再解析json。正在研究Selenium,考虑内嵌一个浏览器做渲染。

内嵌一个浏览器的想法不错,但是对性能的影响大不大?我的知识太少了,回头自己也研究研究,要是有什么拙见还得请您指教指教呢。^_^
米多范er
米多范er
内嵌一个浏览器的想法不错,但是对性能的影响大不大?我的知识太少了,回头自己也研究研究,要是有什么拙见还得请您指教指教呢。^_^
黄亿华
黄亿华

引用来自“ywooer”的评论

@黄亿华 不错不错,终于见着正式版了。先顶一下,再提个问题,关于页面的ajax内容什么时候能提供一个解决方案啊。

现在只能自己拼ajax的url,再解析json。正在研究Selenium,考虑内嵌一个浏览器做渲染。
米多范er
米多范er
@黄亿华 不错不错,终于见着正式版了。先顶一下,再提个问题,关于页面的ajax内容什么时候能提供一个解决方案啊。
JFinal
JFinal
顶起!
黄亿华
黄亿华

引用来自“曹操”的评论

引用来自“曹操”的评论

搞个抽取正文、标题、发布时间、作者的快捷方法吧。

只下载html内容,xpath、css选择器好像简单了些。

里面有一个抽取正文的实现smartContent,用的是readability算法,标题除了title标签也没有太好的办法,其他的东西(时间、作者等)也不太通用,没什么好的办法统一抽取。
下载html可能很简单,但是要做一个真正可用的爬虫,考虑到编码、重试、url管理、模拟UA/cookie,以及各种网站的特殊情况,乃至多线程、分布式,其实也并不简单。
我之前也用HttpClient和HtmlParser手写过很多爬虫,写多了就厌烦这些重复代码了。webmagic的目标就是把这些通用的工作都做了。
Wenh_q
Wenh_q

引用来自“黄亿华”的评论

引用来自“Wenh_q”的评论

和JSoup差不多吧。

嗯,其实css selector就是封装的Jsoup。但是webmagic是一个完整的爬虫实现,还包括有url管理、页面下载、多线程这些功能,抽取接口也更方便一些。

看上去是不错,我写的爬虫没有这么多功能。以后多看看这个项目。
匿名网友
匿名网友

引用来自“曹操”的评论

搞个抽取正文、标题、发布时间、作者的快捷方法吧。

只下载html内容,xpath、css选择器好像简单了些。
返回顶部
顶部