广告
返回顶部
首页 > 资讯 > 后端开发 > Python >超简单的scrapy实现ip动态代理与更换ip的方法实现
  • 881
分享到

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

2024-04-02 19:04:59 881人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

简单实现ip代理,为了不卖广告, 请自行准备一个ip代理的平台 例如我用的这个平台,每次提取10个ip 从上面可以看到数据格式是文本,换行是\r\n,访问链接之后大概就是长这样

简单实现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内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 超简单的scrapy实现ip动态代理与更换ip的方法实现

本文链接: https://www.lsjlt.com/news/122098.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 超简单的scrapy实现ip动态代理与更换ip的方法实现
    简单实现ip代理,为了不卖广告, 请自行准备一个ip代理的平台 例如我用的这个平台,每次提取10个ip 从上面可以看到数据格式是文本,换行是\r\n,访问链接之后大概就是长这样...
    99+
    2022-11-11
  • scrapy如何实现ip动态代理与更换ip
    这篇文章将为大家详细讲解有关scrapy如何实现ip动态代理与更换ip,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。请自行准备一个ip代理的平台例如我用的这个平台,每次提取10个ip从上面可以看到数据格式...
    99+
    2023-06-14
  • python实现自动更换ip的方法
    from: http://www.jb51.net/article/65513.htm ...
    99+
    2023-01-31
    方法 python ip
  • Python获取linux主机ip的简单实现方法
    本文实例讲述了Python获取linux主机ip的简单实现方法。分享给大家供大家参考,具体如下: python有好几种方法可以获取主机的ip地址。我常用的一种是通过socket.socket().inet_...
    99+
    2022-06-04
    主机 简单 方法
  • java动态代理的实现方法
    这篇文章主要介绍“java动态代理的实现方法”,在日常操作中,相信很多人在java动态代理的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java动态代理的实现方法”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-20
  • Python搭建自己IP代理池的方法实现
    IP代理是什么: ip就是访问网页数据服务器位置信息,每一个主机或者网络都有一个自己IP信息 为什么要使用代理ip: 因为在向互联网发送请求中,网页端会识别客户端是真实用户还是爬虫程...
    99+
    2023-02-13
    Python搭建IP代理池 Python IP代理池
  • 利用java实现动态代理的方法
    这篇文章将为大家详细讲解有关利用java实现动态代理的方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。java 动态代理的方法总结AOP的拦截功能是由java中的动态代理来实现的。说白了,...
    99+
    2023-05-31
    java 动态代理 ava
  • Java实现动态代理的方法有哪些
    这篇文章将为大家详细讲解有关Java实现动态代理的方法有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。详解Java动态代理的实现及应用Java动态代理其实写日常业务代码是不常用的,但在框...
    99+
    2023-05-31
    java 动态代理 ava
  • Python 快速验证代理IP是否有效的方法实现
    有时候,我们需要用到代理IP,比如在爬虫的时候,但是得到了IP之后,可能不知道怎么验证这些IP是不是有效的,这时候我们可以使用Python携带该IP来模拟访问某一个网站,如果多次未成功访问,则说明这个代理是无效的。 ...
    99+
    2022-06-02
    Python 验证代理IP python代理IP是否有效
  • linux进程监控与自动重启的简单实现方法
    目的: linux 下服务器程序会因为各种原因dump掉,就会影响用户使用,这里提供一个简单的进程监控和重启功能。 实现原理: 由定时任务crontab调用脚本,脚本用ps检查进程是否存在,如果不存在则重启并写入日志。 ...
    99+
    2022-06-04
    linux 进程监控 Linux监控某个进程 linux自动重启命令
  • Java通过动态代理实现一个简单的拦截器操作
    一、代理 在使用动态代理实现拦截器之前我们先简单了解一下什么Java的代理。 代理,顾名思义,就是不直接操作被代理(下面都用目标对象称呼,听起来舒服一些)对象,而是通过一个代理对象去...
    99+
    2022-11-12
  • Java动态代理的原理及实现方法是什么
    本篇内容主要讲解“Java动态代理的原理及实现方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java动态代理的原理及实现方法是什么”吧!代理是指:某些场景下对象会找一个代理对象,来辅助...
    99+
    2023-07-02
  • Java怎么通过动态代理实现一个简单的拦截器操作
    本文小编为大家详细介绍“Java怎么通过动态代理实现一个简单的拦截器操作”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java怎么通过动态代理实现一个简单的拦截器操作”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-06-17
  • Java如何通过动态代理实现一个简单的拦截器操作
    这篇文章主要介绍“Java如何通过动态代理实现一个简单的拦截器操作”,在日常操作中,相信很多人在Java如何通过动态代理实现一个简单的拦截器操作问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java如何通过动...
    99+
    2023-06-20
  • vue实现动态路由添加功能的简单方法(无废话版本)
    目录前言一 . 封装一个处理生产路由的函数二. vuex中进行调用三,最终完成动态添加路由总结 前言 最近练习vue的项目,有关于后台管理系统的动态添加路由部分,根据思路实...
    99+
    2023-02-16
    vue 动态添加路由 vue动态添加路由配置 vue动态配置路由
  • Android编程使用GestureDetector实现简单手势监听与处理的方法
    本文实例讲述了Android编程使用GestureDetector实现简单手势监听与处理的方法。分享给大家供大家参考,具体如下:添加手势识别监听步骤:一、给相应的控件添加触摸监听事件,二、利用GestureDetector转发这个触摸事件。...
    99+
    2023-05-30
    android gesturedetector 手势
  • UNITY 基础之 实现动态加载网络端、PC端和 ANDROID 端指定路径下的图片的简单方法
    一、简单介绍 Unity中的一些基础知识点,便于后期查看学习。 本节介绍,如何动态加载网络上,电脑上或者Android手机上指定路径的图片的简单方式,方法不唯一,仅供参考。 二、实现原理 UnityWebRequest 发起网络请求,Do...
    99+
    2023-09-24
    unity 游戏引擎
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作