python:scrapy使用代理IP

4 投票
1 回答
4334 浏览
提问于 2025-04-18 06:16

我想用代理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,
}

撰写回答