我想做大规模的数据挖掘。为此,我需要一个快速的爬虫。我所需要的只是下载一个网页,提取链接并递归地跟踪它们,但无需访问相同的 url 两次。基本上,我想避免循环。
我已经用python写了一个爬虫,但是太慢了。我无法用它使 100Mbit 线路饱和。最高速度约为 40 个 URL/秒。由于某种原因,很难得到更好的结果。这似乎是 python 的多线程/套接字的问题。我也遇到了 python 的 gargabe 收集器的问题,但这是可以解决的。顺便说一句,CPU不是瓶颈。
那么,我应该用什么来编写一个尽可能快的爬虫,以及在爬取时避免循环的最佳解决方案是什么?
编辑:解决方案是组合multiprocessing
和threading
模块。生成多个进程,每个进程具有多个线程以获得最佳效果。在单个进程中生成多个线程是无效的,并且只有一个线程的多个进程会消耗太多内存。