kin_sin 2019-09-27 21:22 采纳率: 100%
浏览 296

有没有懂python scrapy代理ip的老哥?

一个困扰我好几天的问题:用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,
}

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-09-27 23:18
    关注

    你得找匿名代理才行,普通代理会通过x-forward-for参数向服务器报告被代理者的ip

    评论

报告相同问题?

悬赏问题

  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名