目录

  • 为什么使用代理
  • 什么是代理
  • 如何使用代理
  • 使用代理
  • 代理网站

为什么使用代理

在使用爬虫的过程中经常会遇到这样的情况,爬虫最初还可以正常运行,正常爬取数据,一切看似美好,然而一杯茶的工夫过去就可能出现了错误。

比如返回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中代理的使用相关推荐

  1. 在Scrapy中使用爬虫动态代理IP

    本文介绍如何在Scrapy中使用无忧代理(www.data5u.com)的爬虫动态代理IP,以及如何设置User-Agent. 动态转发参考https://blog.csdn.net/u0109787 ...

  2. Requests 和 Scrapy 中的代理 IP 设置

    摘要: Requests 和 Scrapy 中的代理 IP 设置方法. 目标测试网页如下,请求该网页可以返回当前 IP 地址: ∞ http://icanhazip.com 先来说说 Requests ...

  3. 【python爬虫】在scrapy中利用代理IP(爬取BOSS直聘网)

    同学们好,我又滚回来更新了,这一次我们要爬取的目标是BOSS直聘,BOSS直聘可以说是反爬虫一个很好的例子了,主要在于如果你访问他的次数过多,他就会出现验证码,要求你通过验证才能继续看,这样还算可以, ...

  4. 三十五、Scrapy 中的杂知识总结和代理池的编写

    @Author:Runsen 上次 用scrapy爬了腾讯招聘网站,有两个job.json 和detail.json,针对一个item,其实有更简单的处理方法. 今天讲讲scrapy 中的杂知识,做一 ...

  5. Scrapy ip代理无响应

    Scrapy ip代理长时间无响应原因分析 在setting.py中添加可用ip代理池: PROXIES=['http://182.149.82.74:9999','http://121.237.25 ...

  6. scrapy中关于Splash的使用

    为什么要学习Splash? 我们经常使用scrapy框架编写爬虫代码,站在巨人的肩膀上感觉很好,但是一旦遇到网站用JavaScript动态渲染,scrapy就显得有些力不从心了,我们了解的seleni ...

  7. python—简单数据抓取七(采取蘑菇API代理设置scrapy的代理IP池并利用redis形成队列依次使用,利用ip池访问网页并将scrapy爬取转移到items的数据存入到数据库)

    学习目标: Python学习二十七-简单数据抓取七 学习内容: 1.采取蘑菇API代理设置scrapy的代理IP池并利用redis形成队列依次使用 2.利用ip池访问网页并将scrapy爬取转移到it ...

  8. scrapy中添加ip池的方法

    scrapy中添加ip池的方法 我使用的是scrapy2.2 setting 中写下ip池 IPPOOL = [{'ipaddr':'221.230.72.165:80'}, {'ipaddr':'1 ...

  9. Scrapy中的splash的安装应用

    Scrapy中的splash的安装应用 因为要去抓取部分经过JavaScript渲染的网页数据,所以使用scrapy中的Request返回的是没有经过渲染的网页代码, 因此我们就要运用Scrapy中的 ...

最新文章

  1. 酷狗kuGoo 2007 和 flex有冲突
  2. Re:关于集成测试与系统测试
  3. 用静态工厂方法代替构造器
  4. 发掘 CPU 与超级工厂的共性,程序员的心思你别猜
  5. toj 4609 Internal Rate of Return
  6. Linux操作Oracle(3)——Oracle OPatch打补丁遇到问题详细汇总详细记录
  7. mORMot Js对象解析 Json 实例
  8. JVM故障分析系列之四:jstack生成的Thread Dump日志线程状态
  9. Linux安装Zabbix
  10. “唵嘛呢叭咪吽”是什么意思? - 搜搜问问
  11. wincc变量数据归档(案例)
  12. bios设置raid启动模式Linux,RAID BIOS检测硬盘以及设置RAID模式
  13. [C#]LambdaTest
  14. 工业B2B电商平台整合延伸工业供应链上下游,打造产业链闭环
  15. 我和数据类型抗争的血泪史(二十五分钟)
  16. 技嘉b365m小雕驱动工具_【黑苹果】技嘉B365M小雕+i5 9400F+RX590EFI分享
  17. python安装pyecharts库_python安装阿里云库pyecharts 安装不上,求大佬指点一下-问答-阿里云开发者社区-阿里云...
  18. 差分进化算法python 指派问题_多目标优化算法
  19. SSM中mybtis报错### The error may involve defaultParameterMap ### The error occurred while setting param
  20. 【Vue系列1】—— Vue入门和基础指令

热门文章

  1. 论文--计算机视觉中的注意力机制
  2. LM321低功耗单路运算放大器
  3. 用javascript复制地址
  4. 华为将设研发机构在日本“进军物联网”
  5. 【JAVA 八卦罗盘动态运行实现】
  6. VIOOVI的ECRS工时分析软件解析:什么是生产线平衡?生产线平衡的目的是什么?
  7. 开开心心了解------linux命令-----经典
  8. 瑞盟 MS41929 步进电机驱动IC 一些使用心得
  9. javascript自动判断15位和18为身份证号计算年龄的解决方案
  10. 测试机械表误差的软件,机械表的误差越小就越好吗?其实你错了