scrapy中使用 IP 代理
在 scrapy 中使用 ip 代理需要借助中间件的功能
首先在settings 中设置好中间件,中间件优先级数字越小越先被执行
'DOWNLOADER_MIDDLEWARES':{
'spider.spider.middlewares.ProxyMiddleWare':,
'spider.spider.middlewares.SelenuimDownloaderMiddleware':
}
然后编写中间件,拦截请求设置代理
class ProxyMiddleWare(object):
def process_request(self, request, spider):
""" 对 request 加上proxy"""
proxy = RedisClient().pop_proxy().decode('utf-8')
print('---------this is request ip ----------:'+ proxy)
request.meta['proxy'] = proxy
def process_response(self, request, response, spider):
""" 对返回的 response 处理"""
# 如果返回的 response 状态不是 , 重新生成当前的 request对象
if response.status != :
proxy = RedisClient().pop_proxy().decode('utf-8')
print('this is response ip:'+ proxy)
# 对当前 request 加上代理
return request
return response
scrapy中使用 IP 代理的更多相关文章
- python爬虫中的ip代理设置
设置ip代理是爬虫必不可少的技巧: 查看本机ip地址:打开百度,输入“ip地址”,可以看到本机的IP地址: 本文使用的是goubanjia.com里面的免费ip: 使用时注意要注意传输协议是http还 ...
- 在Scrapy中使用IP池或用户代理更新版(python3)
middlewares.py # -*- coding: utf-8 -*- # 导入随机模块 import random # 导入有关IP池有关的模块 from scrapy.downloaderm ...
- 在Scrapy中使用IP池或用户代理(python3)
一.创建Scrapy工程 scrapy startproject 工程名 二.进入工程目录,根据爬虫模板生成爬虫文件 scrapy genspider -l # 查看可用模板 scrapy gensp ...
- python使用ip代理抓取网页
在抓取一个网站的信息时,如果我们进行频繁的访问,就很有可能被网站检测到而被屏蔽,解决这个问题的方法就是使用ip代理 .在我们接入因特网进行上网时,我们的电脑都会被分配一个全球唯一地ip地址供我们使用, ...
- scrapy实战9动态设置ip代理从数据库中随机获取一个可用的ip:
在目录下创建tools(python package) 在tools中创建crawl_xici_ip.py文件写入代码如下: #coding=utf-8 import requests from sc ...
- selenium在scrapy中的使用、UA池、IP池的构建
selenium在scrapy中的使用流程 重写爬虫文件的构造方法__init__,在该方法中使用selenium实例化一个浏览器对象(因为浏览器对象只需要被实例化一次). 重写爬虫文件的closed ...
- Scrapy学习篇(十二)之设置随机IP代理(IPProxy)
当我们需要大量的爬取网站信息时,除了切换User-Agent之外,另外一个重要的方式就是设置IP代理,以防止我们的爬虫被拒绝,下面我们就来演示scrapy如何设置随机IPProxy. 设置随机IPPr ...
- python爬虫实战(三)--------搜狗微信文章(IP代理池和用户代理池设定----scrapy)
在学习scrapy爬虫框架中,肯定会涉及到IP代理池和User-Agent池的设定,规避网站的反爬. 这两天在看一个关于搜狗微信文章爬取的视频,里面有讲到ip代理池和用户代理池,在此结合自身的所了解的 ...
- Scrapy中的UA池,代理池,以及selenium的应用
UA池 代理池 selenium在Scrapy中的应用 UA池 - 下载中间件: - 下载中间件(Downloader Middlewares) 位于scrapy引擎和下载器之间的一层组件. - 作用 ...
随机推荐
- wampserver apache 403无权限访问 You don't have permission to access /index.html on this server
今天接到要求 需要配置一下https 折腾好久 最后好还遇到了权限不够的问题 最后解决方案如下 我这边补充一下我的方法 我的apache是 2.4.23 版本 是由 wampserver集成的 在 h ...
- Panda的学习之路(1)——series 和 Dataframe
一.Series panda最基本的对象 # pandas的基础s=pd.Series([1,3,6,np.nan,44,1])#建立个简单的基本对象 类似一个一位数组print("建立个简 ...
- ubuntu更换pip源
1.创建pip.conf文件 cd ~/.pip 当提示不存在时,创建它 mkdir ~/.pip 在.pip目录下创建一个pip.conf文件 touch pip.conf 2.编辑pip.conf ...
- angular 中引入 markdown
ngx-markdown 是 Angular2+ 的一个第三方库,它的主要功能是将md文件转换为HTML格式,并且支持语法高亮. GITHUB地址:https://github.com/jfcere/ ...
- JDK-13下载安装及环境变量配置
1.JDK-13下载安装及环境变量配置 直接去官网下载 附下载链接:https://www.oracle.com/technetwork/java/javase/downloads/index.htm ...
- ARM64架构下面安装mysql5.7.22
MySQL下载地址为: https://obs.cn-north-4.myhuaweicloud.com/obs-mirror-ftp4/database/mysql-5.7.27-aarch64.t ...
- JS数组删除
--------------let items=['a','1',0,2,100,null,NaN,undefined,]; -------------要求以上数据执行后输出['1',0,2,100] ...
- oracle增加字段,循环
alter table PARAMETETER_CONFIGURATION add (INPUT_IS VARCHAR2(20) ): declare sum_i int:=0; --定义整型变量,存 ...
- Fluent_Python_Part4面向对象,10-seq-hacking,序列的修改、散列和切片
第四部分第10章,序列的修改.散列和切片 中文电子书P423 这一章接第1章.第9章,以第9章定义的Vector2d类为基础,定义表示多为向量的Vector类.这个类的行为与Python中标准的不可变 ...
- 用myeclipse快速搭建hibernate实现数据库访问
前言 hibernate使用的大致过程为引入jar包.配置主配置文件.配置映射文件.编写实体类.编写dao.但是每一步都需要知道的内容都相对不少,造成困难.如果使用myeclipse提供的支持将非常容 ...