scrapy中代理的使用
目录
- 为什么使用代理
- 什么是代理
- 如何使用代理
- 使用代理
- 代理网站
为什么使用代理
在使用爬虫的过程中经常会遇到这样的情况,爬虫最初还可以正常运行,正常爬取数据,一切看似美好,然而一杯茶的工夫过去就可能出现了错误。
比如返回403 Forbidden,这时打开网页,可能会看到“您的IP访问频率太高” 这样的提示,或者跳出一个验证码让我们识别,通过之后,才可以正常访问,但是过一会儿又会变成这样。
出现上述现象的原因是网站采取了—些反爬虫措施。
例如服务器会检测某个IP在单位时间内的请求次数,如果这个次数超过了指定的阈值,就直接拒绝服务,并返回一些错误信息,这种情况可以称为封IP。
这样,网站就成功把我们的爬虫封禁。
什么是代理
既然服务器检测的是某个IP在单位时|可的请求次数,那么借助某种方式把IP伪装起来,让服务器识别不出来是由我们本机发起的请求,不就可以成功防止封ip了吗,这时候代理就派上用场了。
如何使用代理
通过之前的学习我们知道,在request中有一个meta的属性,它可以携带request请求时额外的参数,因此我们可以利用meta携带proxy参数。
当然在爬虫使用当中,一个代理往往是不够的,我们通常使用多个代理,因此我们就需要构建代理池,构建代理池的方法与ua池基本一致,在sttings中创建一个PROXY_IP_LIST列表用于存放代理ip。
使用代理
同理,在request请求过程中,通过中间件,将代理ip存进request的meta属性中,那么在request请求时候,我们的ip就变为代理ip了。
具体实现如下
创建一个新的中间件类ProxyDownloaderMiddleware,使用process_request方法,从PROXY_IP_LIST随机选出一个代理ip放入meta属性中。
在settings中配置中间件
注意导入
代理网站
再此,我在网上查找了一些代理网站使用。
https://www.kuaidaili.com/
https://www.89ip.cn/
https://proxy.ip3366.net/
http://www.ip3366.net/
http://www.66ip.cn/
scrapy中代理的使用相关推荐
- 在Scrapy中使用爬虫动态代理IP
本文介绍如何在Scrapy中使用无忧代理(www.data5u.com)的爬虫动态代理IP,以及如何设置User-Agent. 动态转发参考https://blog.csdn.net/u0109787 ...
- Requests 和 Scrapy 中的代理 IP 设置
摘要: Requests 和 Scrapy 中的代理 IP 设置方法. 目标测试网页如下,请求该网页可以返回当前 IP 地址: ∞ http://icanhazip.com 先来说说 Requests ...
- 【python爬虫】在scrapy中利用代理IP(爬取BOSS直聘网)
同学们好,我又滚回来更新了,这一次我们要爬取的目标是BOSS直聘,BOSS直聘可以说是反爬虫一个很好的例子了,主要在于如果你访问他的次数过多,他就会出现验证码,要求你通过验证才能继续看,这样还算可以, ...
- 三十五、Scrapy 中的杂知识总结和代理池的编写
@Author:Runsen 上次 用scrapy爬了腾讯招聘网站,有两个job.json 和detail.json,针对一个item,其实有更简单的处理方法. 今天讲讲scrapy 中的杂知识,做一 ...
- Scrapy ip代理无响应
Scrapy ip代理长时间无响应原因分析 在setting.py中添加可用ip代理池: PROXIES=['http://182.149.82.74:9999','http://121.237.25 ...
- scrapy中关于Splash的使用
为什么要学习Splash? 我们经常使用scrapy框架编写爬虫代码,站在巨人的肩膀上感觉很好,但是一旦遇到网站用JavaScript动态渲染,scrapy就显得有些力不从心了,我们了解的seleni ...
- python—简单数据抓取七(采取蘑菇API代理设置scrapy的代理IP池并利用redis形成队列依次使用,利用ip池访问网页并将scrapy爬取转移到items的数据存入到数据库)
学习目标: Python学习二十七-简单数据抓取七 学习内容: 1.采取蘑菇API代理设置scrapy的代理IP池并利用redis形成队列依次使用 2.利用ip池访问网页并将scrapy爬取转移到it ...
- scrapy中添加ip池的方法
scrapy中添加ip池的方法 我使用的是scrapy2.2 setting 中写下ip池 IPPOOL = [{'ipaddr':'221.230.72.165:80'}, {'ipaddr':'1 ...
- Scrapy中的splash的安装应用
Scrapy中的splash的安装应用 因为要去抓取部分经过JavaScript渲染的网页数据,所以使用scrapy中的Request返回的是没有经过渲染的网页代码, 因此我们就要运用Scrapy中的 ...
最新文章
- 酷狗kuGoo 2007 和 flex有冲突
- Re:关于集成测试与系统测试
- 用静态工厂方法代替构造器
- 发掘 CPU 与超级工厂的共性,程序员的心思你别猜
- toj 4609 Internal Rate of Return
- Linux操作Oracle(3)——Oracle OPatch打补丁遇到问题详细汇总详细记录
- mORMot Js对象解析 Json 实例
- JVM故障分析系列之四:jstack生成的Thread Dump日志线程状态
- Linux安装Zabbix
- “唵嘛呢叭咪吽”是什么意思? - 搜搜问问
- wincc变量数据归档(案例)
- bios设置raid启动模式Linux,RAID BIOS检测硬盘以及设置RAID模式
- [C#]LambdaTest
- 工业B2B电商平台整合延伸工业供应链上下游,打造产业链闭环
- 我和数据类型抗争的血泪史(二十五分钟)
- 技嘉b365m小雕驱动工具_【黑苹果】技嘉B365M小雕+i5 9400F+RX590EFI分享
- python安装pyecharts库_python安装阿里云库pyecharts 安装不上,求大佬指点一下-问答-阿里云开发者社区-阿里云...
- 差分进化算法python 指派问题_多目标优化算法
- SSM中mybtis报错### The error may involve defaultParameterMap ### The error occurred while setting param
- 【Vue系列1】—— Vue入门和基础指令