一个困扰我好几天的问题:用scrapy写的一个访问58同城的简易爬虫,在中间件里爬了很多有效的代理IP,但是在process____request方法里,代理IP不知道为什么就是不切换,一直使用的是最初成功的那个IP,明明打印的信息是已经更换了新的IP,实际访问的结果来看却还是没有更换。。。
-----这是控制台的打印:
这是爬虫文件:xicispider.py
name = 'xicispider'
allowed_domains = ['58.com']
start_urls = ['https://www.58.com/']
def parse(self, response):
reg = r'<title>(.*?)</title>'
print(re.search(reg,response.text).group())
yield scrapy.Request(url='https://www.58.com',callback=self.parsep, dont_filter=True)
def parsep(self, response):
reg = r'<title>(.*?)</title>'
print(re.search(reg,response.text).group())
这是中间件:middleware.py
def process_request(self,spider,request):
ip = random.choice(self.proxies)
print("process_request方法运行了,重新获取的ip是:--------->",ip)
request.meta['proxy'] = ip
这是settings.py里的有关配置:
DOWNLOADER_MIDDLEWARES = {
'xici.middlewares.XiciDM': 543,
}