使用代理在Scrapy中进行多线程处理

时间:2016-08-13 12:06:47

标签: python multithreading web-scraping scrapy

我想使用scrapy抓取大约400万页。我正在使用storm proxies。 让我们说我的帐户允许的线程数是20。 我想问 -

多线程在scrapy中意味着CONCURRENT_REQUESTS_PER_DOMAIN。

或者还有其他任何方法可以做到这一点。

如何有效地使用这20个线程

注意 - 如果我不清楚我的问题,请发表评论,我会尽力详细说明。

1 个答案:

答案 0 :(得分:1)

直接退出文档:

  

CONCURRENT_REQUESTS - 最大并发数(即。   同时)请求将由Scrapy执行   下载器。

     

CONCURRENT_REQUESTS_PER_DOMAIN - 最大并发数   (即同时)将对任何单个执行的请求   域。

     

CONCURRENT_REQUESTS_PER_IP - 最大并发数(即。   同时)将对任何单个IP执行的请求。如果   非零,CONCURRENT_REQUESTS_PER_DOMAIN设置被忽略,并且   这个用来代替。换句话说,并发限制将是   每个IP应用,而不是每个域。

直接回答您的问题

我怀疑该服务只允许你整个搜索20个线程,这意味着它不关心你的请求,所以你应该使用CONCURRENT_REQUESTS设置为20最大值(默认值为16)。

每个请求都是“一种线程”。它建立在Twisted之上。在你正在使用的代理服务的眼中,没有办法分辨出来,所以每个请求都是代理线程!