半岛铁盒子 2018-12-22 20:59 采纳率: 0%
浏览 861

scrapy怎么让队列中多个请求共用一个代理ip?

环境背景: 2个服务器, celery+rabbitmq + python+ scrapy爬虫框架

共有6000个url, 12点的时候启动celery产生任务和队列派给两个服务器去爬, 每次处理100个url, 我用中间件拿到10个代理ip携带上去请求, 100个处理完后, 继续处理队列中的下一组100个url, 但是为什么不读取新的ip呢? 这样6000个url跑完, 永远用的还是第一次那10个ip, 目前我是在process_request函数中每个请求都去读取一个有ip的文本, 而文本定时更换保证只有10个ip, 所以100个请求也只会随机从10个里拿, 但是后边处理队列中其他一堆请求就再也不读取新ip了, 怎么解决呢?

读取文本是为了节省ip, 如果在不读取文本,而是直接调取ip接口, 那就需要特别多的ip, 一轮6000个url就需要最少6000个ip, 现在一轮只想用300个ip, 每进行下一组100个url的时候就让它拿新的10个ip , 但貌似现在就不拿...文本里的ip还在定时更换, 结果scrapy就拿一次, 再也不拿了..

  • 写回答

1条回答 默认 最新

  • 沵若成风 2018-12-24 01:41
    关注

    每次随机选择一个IP,不过总是用1个会被反爬的,
    list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    slice = random.sample(list, 5)

    评论

报告相同问题?

悬赏问题

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