首页 > scrapy用代理ip爬取出现的问题?

scrapy用代理ip爬取出现的问题?

问题介绍:

我有一个代理ip池,大约有1000个ip,放在自己定义的MyCustomProxyMiddleware中:

def process_request(self, request, spider):
    proxy_address = random.choice(self.proxies)
    request.meta['proxy'] = proxy_address
    
 def process_exception(self, request, exception, spider):
    proxy = request.meta['proxy']
    log.msg('Removing failed proxy <%s>, %d proxies left' % (
                proxy, len(self.proxies)))
    try:
        del self.proxies
    except ValueError:
        pass
        

我设置DOWNLOAD_TIMEOUT = 1200

问题:
运行后出现:TCP connection time out 10086.

补充:
如果用本机ip不会出现这个问题。

自己的理解:
每次request请求,都会在代理ip池中自由选择一个ip,但是如果这时ip出现问题,此次请求便会超时,难道不会在ip池中再选一个ip进行连接吗?
和DOWNLOAD_TIMEOUT的设置有关吗?


1200秒的时间太长了,

建议看看文档中settings的这个几个选项
RETRY_ENABLED
RETRY_HTTP_CODES
RETRY_TIMES


有可能是代理ip失效了,我一般在爬之前起一个进程,针对要爬的网站测代理ip能不能用,提供给scrapy,然后隔一段时间刷新一次,爬完了把这个进程停掉

【热门文章】
【热门文章】