pbp*_*pbp 8 python multithreading web-crawler web-mining
我想做大规模的数据挖掘.为此,我需要一个快速爬虫.我只需要下载一个网页,提取链接并递归地跟踪它们,但不要访问相同的网址两次.基本上,我想避免循环.
我已经在python中编写了一个爬虫,但它太慢了.我无法用它浸透100Mbit线.最高速度约为40 urls/sec.由于某种原因,很难获得更好的结果.这似乎是python的多线程/套接字的一个问题.我也遇到了python的gargabe收集器的问题,但这是可以解决的.CPU不是btw的瓶颈.
那么,我应该使用什么来编写尽可能快的爬虫,以及在爬行时避免循环的最佳解决方案是什么?
编辑:解决方案是组合multiprocessing和threading模块.为每个进程生成多个进程的多个进程,以获得最佳效果.在单个进程中生成多个线程是无效的,只有一个线程的多个进程会消耗太多内存.
为什么不使用已经测试过的东西来进行爬行,比如Scrapy?我设法在具有有限RAM内存(约400Mb)的低端VPS上达到每秒近100页,而网络速度约为6-7 Mb/s(即低于100Mbps).
您可以做的另一项改进是使用urllib3(特别是在从单个域抓取许多页面时).这是我前一段时间的简短比较:
Scrapy现在使用Requests库,后者又使用urllib3.这使得Scrapy成为刮擦时的绝对首选工具.最新版本还支持部署项目,因此从VPS中抓取比以往更容易.
| 归档时间: |
|
| 查看次数: |
6523 次 |
| 最近记录: |