@黄亿华 你好,想跟您请教个问题:最近一直在研究爬虫,在开源项目中,发现您的API这种实现方式比较合胃口(讨厌配置文件~~)。自己用了一下,感觉非常满意。现在我有个问题,如果我想把抓取的结果保存到数据库中(比如Mongodb),是不是需要自己实现Pipeline接口写一个DBPipeline?求指教。
@黄亿华 好吧!黄哥。。。小弟实在是佩服。。。非常感谢您的帮助!
回复最近写了一篇长文,讲爬虫的机制,可以看一下:http://my.oschina.net/flashsword/blog/145796
回复 @ywooer : 拿韩寒的新浪博客为例,你可以从你想要爬的博客的第一篇开始,每一页只抓取页脚的"前一篇"链接,这个区域可以用xpath来选取,再使用links方法来抽取链接,最后代码是这样子:
page.addTargetRequests(page.getHtml() .xpath("//div[@class='articalfrontback SG_j_linedot1 clearfix']"). links().toStrings());
完整代码在https://github.com/code4craft/webmagic/blob/master/webmagic-samples/src/main/java/us/codecraft/webmagic/samples/SinaBlogProcesser.java
webmagic的samples里有一些已有爬虫的实现,你可以参考一下!
诚惶诚恐啊,小弟可当不起您的感谢,我就是菜鸟一个。也就只能拿大牛的东西来用,自己可没那两把刷子。嘿嘿!还得向您请教请教,webmagic能不能实现只抓取页面指定位置的URL,比如说,我要抓取您的博客,但是页面还会有其他人的博客推荐。这个其他人的怎么屏蔽掉?(例如新浪博客)
@黄亿华
回复有两种办法,一种是根据URL地址的特征,用正则表达式来进行过滤,这个比较方便,一般也够用了;还有一种办法,是先选取到页面某一部分,然后再提取链接,这种比较复杂,需要写比较复杂的抽取规则。
回复第一种方法不能满足我的需求,举个例子,新浪博客所有人的博文地址都是http://blog.sina.com.cn/s/blog_*。第二种方法也是我能想到的,但是技术有限,不知道怎么去实现。您能不能给小弟点拨一下?不胜感激啊
首先,非常感谢你的认可!
webmagic做持久化确实是通过实现Pipeline来接口来自己写的,比如我在自己的项目里就自己实现了一个持久化到mysql的,用到了mybatis。
http://git.oschina.net/flashsword20/jobhunter/blob/master/src/main/java/us/codecraft/jobhunter/pipeline/JobInfoDaoPipeline.java
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(8)
@黄亿华 好吧!黄哥。。。小弟实在是佩服。。。非常感谢您的帮助!
回复
最近写了一篇长文,讲爬虫的机制,可以看一下:http://my.oschina.net/flashsword/blog/145796
回复 @ywooer : 拿韩寒的新浪博客为例,你可以从你想要爬的博客的第一篇开始,每一页只抓取页脚的"前一篇"链接,这个区域可以用xpath来选取,再使用links方法来抽取链接,最后代码是这样子:
完整代码在
https://github.com/code4craft/webmagic/blob/master/webmagic-samples/src/main/java/us/codecraft/webmagic/samples/SinaBlogProcesser.java
webmagic的samples里有一些已有爬虫的实现,你可以参考一下!
诚惶诚恐啊,小弟可当不起您的感谢,我就是菜鸟一个。也就只能拿大牛的东西来用,自己可没那两把刷子。嘿嘿!还得向您请教请教,webmagic能不能实现只抓取页面指定位置的URL,比如说,我要抓取您的博客,但是页面还会有其他人的博客推荐。这个其他人的怎么屏蔽掉?(例如新浪博客)
@黄亿华
回复
有两种办法,一种是根据URL地址的特征,用正则表达式来进行过滤,这个比较方便,一般也够用了;还有一种办法,是先选取到页面某一部分,然后再提取链接,这种比较复杂,需要写比较复杂的抽取规则。
回复
第一种方法不能满足我的需求,举个例子,新浪博客所有人的博文地址都是http://blog.sina.com.cn/s/blog_*。第二种方法也是我能想到的,但是技术有限,不知道怎么去实现。您能不能给小弟点拨一下?不胜感激啊
首先,非常感谢你的认可!
webmagic做持久化确实是通过实现Pipeline来接口来自己写的,比如我在自己的项目里就自己实现了一个持久化到mysql的,用到了mybatis。
http://git.oschina.net/flashsword20/jobhunter/blob/master/src/main/java/us/codecraft/jobhunter/pipeline/JobInfoDaoPipeline.java