python:使用代理IP进行scrapy

时间:2014-05-12 07:05:48

标签: python proxy scrapy

我想使用代理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 个答案:

答案 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,
}