我想使用代理IP来使用scrapy进行网页抓取。为了使用代理,我按照文档中的说明设置了环境变量http_proxy
。
$ export http_proxy=http://proxy:port
为了测试IP的变化是否有效,我创建了一个名为test的新蜘蛛:
from scrapy.spider import BaseSpider
from scrapy.contrib.spiders import CrawlSpider, Rule
class TestSpider(CrawlSpider):
name = "test"
domain_name = "whatismyip.com"
start_urls = ["http://whatismyip.com"]
def parse(self, response):
print response.body
open('check_ip.html', 'wb').write(response.body)
但是如果我运行这个蜘蛛,check_ip.html
不会显示环境变量中指定的IP,而是显示原始IP,就像抓取之前一样。
有什么问题?有没有其他方法可以检查我是否使用代理IP?或者有没有其他方法可以使用代理IP?
答案 0 :(得分:2)
在当前项目中编辑settings.py并确保启用了HttpProxyMiddleware:
DOWNLOADER_MIDDLEWARES = {
#you need this line in order to scrap through a proxy/proxy list
'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 110,
}