python:scrapy使用代理IP

python:scrapy使用代理IP,python,proxy,scrapy,Python,Proxy,Scrapy,我想使用代理IP来使用scrapy进行web抓取。为了使用代理,我设置了环境变量http\u proxy,如文档中所述 $export http\u代理=http://proxy:port 为了测试IP的更改是否有效,我创建了一个名为test的新spider: from scrapy.spider import BaseSpider from scrapy.contrib.spiders import CrawlSpider, Rule class TestSpider(CrawlSpider

我想使用代理IP来使用scrapy进行web抓取。为了使用代理,我设置了环境变量
http\u proxy
,如文档中所述

$export http\u代理=http://proxy:port

为了测试IP的更改是否有效,我创建了一个名为test的新spider:

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?

在当前项目中编辑settings.py并确保已启用HttpProxyMiddleware:

DOWNLOADER_MIDDLEWARES = { 
 #you need this line in order to scrap through a proxy/proxy list
'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 110,
}

有什么方法可以检查我是否正在通过我的代理IP进行抓取吗?您使用spider示例的方法应该有效,只需确保在您的系统上设置了http_代理变量,并且启用了HttpProxyMiddleware…另一种简单的方法是在您自己的web服务器上运行spider,然后简单地读取web服务器日志文件。这是我现在想到的第一件事。对于scrapy 1.2.1,它是scrapy.downloadermiddleware.httpproxy。HttpProxyMiddleware@Vipul也许可以检查您的环境变量,如
env | grep-i proxy
,从