python:scrapy使用代理IP
我想用代理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?
1 个回答
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,
}