多线程爬取数据方案?请问

唐代de豆腐 发布于 2013/05/21 23:55
阅读 506
收藏 2

大家好,请教一个与爬虫相关的问题。

目前我的需求是对固定的URL上面的资源抓取网页,保存为本地文件。最后对文件进行全文索引。

(每年定期更新,后台执行。数据记录大概有10-20w条)

我想到的几个技术点是:

1.多线程抓取

2.全文索引

技术点

线程池+httpclient+lucene

问题:

抓取效率如何保证?任务队列怎么实现。怎么方法把任务拆分,线程数量有限。谢谢大家。

加载中
0
自风
自风
可以参考下 Spiderman 的设计思想,完全开放源代码的。
0
唐代de豆腐
唐代de豆腐
是不是这样实现 ,首先解析得到所有url ,存放在队列当中。


然后开启线程去抓取。


当所有任务执行成功后,最后使用lucene建立索引。


大家觉得正确嘛?谢谢
0
断鸿
断鸿

单靠队列其实还不够,要考虑url去重的问题,可以用BlockingQueue做url缓存,各个线程爬到新url后先写到队列中,然后队列线程来控制队列中的url异步写入url数据库,比如说Berkeley DB这时可以做个布隆过滤器去重,这样不会阻碍爬虫线程继续从url库中取url继续爬


0
石头上的常春藤
石头上的常春藤

建议你把上面这个问题简化为 “开源网页爬虫(线程池+httpclient) + lucene”。

开源网页爬虫网上有太多了。目前我自己在用crawler4j,支持多线程爬取,有源码扩展方便,效果还不错。

0
kiwivip
kiwivip
就更新20w条...单线程1天就够了,啥策略都不用,第二天直接覆盖,简单暴力
返回顶部
顶部