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

 更新时间:2021年03月21日 16:45:25   作者:我不是秃头哆唻咪  
这篇文章主要介绍了超简单的scrapy实现ip动态代理与更换ip的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

简单实现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文件,其实就是加两句代码

count = {'count': 0}
ipPool = []

还有就是开启下载器中间件,注意是下面那个download的类,中间件的process_request函数的时候才能生效

在这里插入图片描述

下载器中间件的process_request函数,进行ip代理和固定次数更还ip代理池

	# 记得导包
	from 你的项目.settings import ipPool, count
	import random
	import requests
	
  def process_request(self, request, spider):
    # 随机选中一个ip
    ip = random.choice(ipPool)
    print('当前ip', ip, '-----', count['count'])
    # 更换request的ip----------这句是重点
    request.meta['proxy'] = ip
    # 如果循环大于某个值,就清理ip池,更换ip的内容
    if count['count'] > 50:
      print('-------------切换ip------------------')
      count['count'] = 0
      ipPool.clear()
      ips = requests.get('你的ip获取的地址')
      for ip in ips.text.split('\r\n'):
        ipPool.append('http://' + ip)
    # 每次访问,计数器+1
    count['count'] += 1
    return None

最后就是爬虫文件的start_requests函数,就是第一次发请求前要先填满ip池的ip

	# 记得导包
	from 你的项目.settings import ipPool
	import random
	import requests
	
  def start_requests(self):
    # 第一次请求发起前先填充一下ip池
    ips = requests.get('你的ip获取的地址')
    for ip in ips.text.split('\r\n'):
      ipPool.append('http://' + ip)

简单的ip代理以及固定次数就更换ip池就完成了

到此这篇关于超简单的scrapy实现ip动态代理与更换ip的方法实现的文章就介绍到这了,更多相关scrapy ip动态代理与更换ip内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 分享十个Python提高工作效率的自动化脚本

    分享十个Python提高工作效率的自动化脚本

    在这个自动化时代,我们有很多重复无聊的工作要做。 想想这些你不再需要一次又一次地做的无聊的事情,让它自动化,让你的生活更轻松。本文分享了10个Python自动化脚本,希望对大家有所帮助
    2022-10-10
  • Python编程基础之函数和模块

    Python编程基础之函数和模块

    这篇文章主要为大家介绍了Python函数和模块,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 使用Python设置Excel单元格数字的显示格式

    使用Python设置Excel单元格数字的显示格式

    Python语言可以帮助我们灵活设置Excel单元格的数字格式,保证数据的一致性与专业标准,本文将介绍如何使用Python对Excel工作表中单元格的数字格式进行设置,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-06-06
  • Python写一个简单的api接口的实现

    Python写一个简单的api接口的实现

    本文主要介绍了Python写一个简单的api接口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • python是先运行metaclass还是先有类属性解析

    python是先运行metaclass还是先有类属性解析

    这篇文章主要为大家介绍了python是先运行metaclass还是先有类属性的问题原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 使用python分析git log日志示例

    使用python分析git log日志示例

    这篇文章主要介绍了使用python分析git log日志示例,需要的朋友可以参考下
    2014-02-02
  • python paramiko远程服务器终端操作过程解析

    python paramiko远程服务器终端操作过程解析

    这篇文章主要介绍了python paramiko远程服务器终端操作过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 一篇文章搞懂Python反斜杠的相关问题

    一篇文章搞懂Python反斜杠的相关问题

    这篇文章主要给大家介绍了如何通过一篇文章搞懂Python反斜杠的相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • python查找特定名称文件并按序号、文件名分行打印输出的方法

    python查找特定名称文件并按序号、文件名分行打印输出的方法

    这篇文章主要介绍了python查找特定名称文件并按序号、文件名分行打印输出的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • python实现代理服务功能实例

    python实现代理服务功能实例

    本文分析了代理服务的原理,并使用PYTHON实现了一个简单的代理服务功能供大家参考使用
    2013-11-11

最新评论