• 售前

  • 售后

热门帖子
入门百科

超简单的scrapy实现ip动态署理与更换ip的方法实现

[复制链接]
嗅觉Y不缺失 显示全部楼层 发表于 2021-10-26 12:42:35 |阅读模式 打印 上一主题 下一主题
简朴素现ip署理,为了不卖广告,
请自行准备一个ip署理的平台
比方我用的这个平台,每次提取10个ip



从上面可以看到数据格式是文本,换行是\r\n,访问链接之后大概就是长这样的,scrapy里面的ip必要加上前缀http://
比方:http://117.95.41.21:34854


OK,那现在已经准备好了ip了,先给你们屡一下思绪。
ip池和计数器放在setting文件
第一次哀求的时间要填满ip池,所以在爬虫文件的start_requests函数动手
更换ip的地方是middlewares的下载器中间件类的process_request函数,由于每个哀求发起前都会经过这个函数
起首是setting文件,实在就是加两句代码
  1. count = {'count': 0}
  2. ipPool = []
复制代码
还有就是开启下载器中间件,注意是下面那个download的类,中间件的process_request函数的时间才气生效


下载器中间件的process_request函数,进行ip署理和固定次数更还ip署理池
  1.         # 记得导包
  2.         from 你的项目.settings import ipPool, count
  3.         import random
  4.         import requests
  5.        
  6.   def process_request(self, request, spider):
  7.     # 随机选中一个ip
  8.     ip = random.choice(ipPool)
  9.     print('当前ip', ip, '-----', count['count'])
  10.     # 更换request的ip----------这句是重点
  11.     request.meta['proxy'] = ip
  12.     # 如果循环大于某个值,就清理ip池,更换ip的内容
  13.     if count['count'] > 50:
  14.       print('-------------切换ip------------------')
  15.       count['count'] = 0
  16.       ipPool.clear()
  17.       ips = requests.get('你的ip获取的地址')
  18.       for ip in ips.text.split('\r\n'):
  19.         ipPool.append('http://' + ip)
  20.     # 每次访问,计数器+1
  21.     count['count'] += 1
  22.     return None
复制代码
末了就是爬虫文件的start_requests函数,就是第一次发哀求前要先填满ip池的ip
  1.         # 记得导包
  2.         from 你的项目.settings import ipPool
  3.         import random
  4.         import requests
  5.        
  6.   def start_requests(self):
  7.     # 第一次请求发起前先填充一下ip池
  8.     ips = requests.get('你的ip获取的地址')
  9.     for ip in ips.text.split('\r\n'):
  10.       ipPool.append('http://' + ip)
复制代码
简朴的ip署理以及固定次数就更换ip池就完成了

到此这篇关于超简朴的scrapy实现ip动态署理与更换ip的方法实现的文章就先容到这了,更多相关scrapy ip动态署理与更换ip内容请搜索草根技术分享以前的文章或继承欣赏下面的相关文章盼望各人以后多多支持草根技术分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作