在使用scrapy写爬虫的时候经常使用代理来避免被禁,也可以通过下载延迟download_delay等方式,在设置代理的时候需要注意两个细节,虽然不是重点,但是这也是一个隐藏的坑点。
1. SPIDER_MIDDLEWARES 和 DOWNLOADER_MIDDLEWARES 会容易混淆,因为在默认的settings里这两个配置很靠近,很容易将DOWNLOADER_MIDDLEWARES 的设置写在SPIDER_MIDDLEWARES里,如果配置写错了middlewares里的代码就不起作用了
2. 在settings里配置代理中间件的时候往往会忘了把默认的中间件关掉,如果配置的优先级小于默认的,代理中间件就会被覆盖掉
DOWNLOADER_MIDDLEWARES = {
'comment.middlewares.UserAgentProxyMiddleware': 600,
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None # 关掉默认的中间件
}