超简单的scrapy实现ip * 与更换ip的方法实现
作者:我不是秃头哆唻咪 发布时间:2022-12-21 19:58:05
标签: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池就完成了
来源:https://blog.csdn.net/weixin_44864260/article/details/115024231


猜你喜欢
- 前言Python中使用SSH需要用到OpenSSH,而OpenSSH依赖于paramiko模块,而paramiko模块又依赖于pycrypt
- 目录搭建Vuex环境总结搭建Vuex环境在src目录下创建一个文件夹store,在store文件夹内创建一个index.js文件index.
- 此方法创建了请求另一个URL的HTML超文本链接。语法string.link( hrefname )下面是参数的详细信息:&nb
- (一)什么是跨域同源请求就是指协议名、主机名、端口号三者一样跨域请求:是指协议名、主机名、端口号三者有任何一个不一样,而且跨域请求是请求发出
- 本文实例讲述了Vue常用传值方式、父传子、子传父及非父子。分享给大家供大家参考,具体如下:父组件向子组件传值是利用props子组件中的注意事
- 最近,接手的项目里,提供的数据文件格式简直让人看不下去,使用pandas打不开
- 如果你是pytorch的用户,可能你会很熟悉pytorch生态圈中专门预处理图像数据集的torchvision库。从torchtext这个名
- 本文实例讲述了python 协程中的迭代器,生成器原理及应用。分享给大家供大家参考,具体如下:1.迭代器理解迭代器:迭代器是访问可迭代对象的
- 本文实例讲述了python实现向ppt文件里插入新幻灯片页面的方法。分享给大家供大家参考。具体实现方法如下:# -*- coding: UT
- 一、概述机器学习算法在近几年大数据点燃的热火熏陶下已经变得被人所“熟知”,就算不懂得其中各算法理论,叫你喊上一两个著名算法的名字,你也能昂首
- Vue2.0/3.0 双向数据绑定的实现原理双向数据绑定简意 即数据的改变能让页面重新渲染Vue2.0 ES5的原理:Object.defi
- 微信小程序作为一种轻量级的应用形式,在移动互联网领域取得了极大的成功。作为 Python 开发者,如何在微信小程序的开发中发挥 Python
- 引言在这篇文章中,我将介绍如何使用YOLOv5构建一个佩戴安全帽检测和识别系统。这个系统可以实时检测图像上人物是否有未佩戴安全帽,并及时进行
- 附上官网地址:https://pytorch.org/docs/stable/index.html1.torch.squeezesqueez
- 暂时是一个手动设置无向图中的边,用一个二维数组表示,后面会改进为用户自己定义无向图的边。学习python的新手,若大佬有解决的办法,希望不吝
- 影响的范围: IE的所有版本在表单的radio/checkbox控件中,一旦他们的DOM结构被更改过就会出现这个bug。bug描述当象下例中
- 操作系统:macOS High Sierra 10.13.3Python3.6因为此版本自带python2.7,就下载并安装了anacond
- 本文实例讲述了php获取客户端IP及URL的方法。分享给大家供大家参考,具体如下:function getonlineip(){//获取用户
- 前面说到了urllib2的简单入门,下面整理了一部分urllib2的使用细节。1.Proxy 的设置urllib2 默认会使用环境变量 ht
- 大家都知道当任务过多,任务量过大时如果想提高效率的一个最简单的方法就是用多线程去处理,比如爬取上万个网页中的特定数据,以及将爬取数据和清洗数