webmagic如何实现一个spider对多个网站的爬取?
@黄亿华 黄大你好,想跟你请教个问题:
简单介绍一下背景,我最近在做一个垂直爬虫的项目,有三个同类型的目标网站需要爬取,有用的网页内容解析后需要格式化保存在硬盘上。
我的问题是,因为一个spider只能调用一个PageProcessor,针对三个不同的网站,是否需要使用三个spider来完成信息提取工作?我在github上看到了一个类似的issue,给出的解决方案是在PageProcessor中采用handler,这种方法是怎样的?
感谢黄大的无私分享!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果一个类爬虫处理多个站点的话,那process函数里的xpath是不是要把域名也要加上 ,
不然如果多个站点 url链接一样,但是内容不同,这样运行起来会不乱窜?
职责链模式的Process即可。我的用法是(处理各种不同的URL):
public static BaseProcess GetProcess(){
BaseProcess testProcess = new CrwtestCountryList()
.SetNextProcess(new CrwtestCountrySightList())
.SetNextProcess(new CrwtestSightList())
.SetNextProcess(new CrwtestSight())
.SetNextProcess(new CrwtestSightImage());
return testProcess;
}
public static void main(String[] args) {
Spider.create(new testProcessor()).scheduler(new FileCacheQueueScheduler("xxx.test.com")).thread(1).pipeline(GetProcess()).run();
}
也是,三个spider逻辑更清晰
要三个吧,一个写URL过滤规则,处理起来逻辑不清晰