有做爬虫经验的朋友,请教爬虫抓取url时的队列处理问题

最近我在做一个爬虫毕业设计,爬虫分为2个队列,对应两张数据表seeds和targets,seeds是尽可能多的爬url,targets是分析seeds中的url是否为我所要的,是则插入,否则过掉。

而我现在的问题是,由于网页上的url可以看成是多叉树(因为每个链接进去后,又会爬到更多的链接……),所以seeds队列的记录以指数级增长,而targets却几乎是线性增长的,很明显跟不上seeds速度,所以现在出现一种情况是程序执行10多秒后,seeds表中爬到了8000多个url,但targets表才100来个记录。。这样的话seeds显得过于臃肿,而targets却比较空闲。

请教各位朋友是如何解决这两者的矛盾呢?

采用正则表达是来过滤是一个很通用的做法,有的还有模版之类的。

但是你现在的是爬新浪微薄的博客对吧,不知道你是通过什么知道http://blog.sina.com.cn/s/blog_xxxxxxxxxxxxxxxx.html 就是你要的target

因为blog static id 都是加密过的 blogId, 所以你可以看到就算一个博主下面所有的blog static id 都是没有规律的

所以我觉得你可以通过关系来爬,比如从博主,找到博友,在来找文章

感觉有点博客搬家的感觉

不知道你的过滤策略是什么?

直接过滤http://www.example.com这样的一级域名?
还是要http://www.example.com/xxx/xxx对url链接内容进行过滤

1、targets可以使用多线程来处理,这样效率会高很多
2、将处理完或不需要的seeds删除、或者移动到历史表

3、对url的抓取,设置过滤规则,确认没有必要的就不入库

你是要自己实现爬虫功能,还是要利用现有的爬虫技术?
如果是采用现有的,Java开源Web爬虫技术地址:
http://www.open-open.com/68.htm