您的位置:首页 > 新闻资讯 >文章内容
爬虫程序中添加随机代理IP
来源:互联网 作者:admin 时间:2019-04-17 16:00:00

  爬虫程序中添加随机代理IP:在Scrapy中更换请求对象的IP信息非常的方便,只需要在request对象进入下载器之前,修改request对象的参数信息。


  所以我们需要在下载器中间件Download_middleware中自定义一个下载器中间件ProxiesMiddleware,在process_request()函数中修改request对象信息。


爬虫程序中添加随机代理IP


  其中PROXIES_LIST是构建的代理列表。


  process_request的参数分别是request当前请求对象,spider当前的爬虫对象。


  返回None,Scrapy将继续处理该Request;


  返回Request对象时,这个Reuqest会重新放到调度队列里,更低优先级的process_reqyest()函数不会执行;


  返回Response对象时,直接将Response对象发送给Spider来处理。


  现在每次发送一次请求,请求对象的IP信息就会从配置中的代理IP池中随机挑选一个。不同的IP就会迷惑服务器监控,不会对本次请求做反爬处理了。不过没有哪个代理是能保证百分之百成功的。付费代理也好,免费代理也好,即使是高匿代理也只不过是提高了防反爬的几率,并没有说一定会成功的。


  问题来了:如果加入了随机代理的请求被反爬了,应该如何解决呢?换下一家网站?收拾铺盖跑路?还是跟它死磕呢?


  请求失败的解决方案有两种:


  1.多试几次,直到请求成功,不成功就报错。


  2.换一个代理试试,直到换成请求成功的代理。对代理质量要求必须高。如果代理池质量很差,项目就会陷入死循环中。


  解决逻辑是:设置重试次数,达到指定次数就换代理。


  幸运的是Scrapy框架中自带了处理失败请求的中间件RetryMiddleware。


  源码如下:


爬虫程序中添加随机代理IP

爬虫程序中添加随机代理IP

爬虫程序中添加随机代理IP


  注释的部分是添加的加入代理的逻辑,需要继承RetryMiddleware之后再重写。


爬虫程序中添加随机代理IP


  在settings中设置最大重试次数以及需要进行重试的异常状态码列表。


  关闭Scrapy自带的RetryMiddleware中间件,开启自定义的Retry中间件。


爬虫程序中添加随机代理IP


  启动项目测试。遇到失败的请求会重新发送,超过最大重试次数以后返回一个空的数据。


  这就是我们预期的结果了,剩下的就是提高代理池的质量,就能最大程度的保证爬虫的可用性了。


爬虫程序中添加随机代理IP


  可以在settings中开启限制爬取速度的配置,使得我们的爬虫项目更接近点击行为操作,提高反反爬效率。


  以上就是关于爬虫程序中添加随机代理IP的方法,如果还没有代理IP使用,可以考虑下机灵代理,品质值得信赖!


相关文章内容简介
推荐阅读
  • 15 2019-04
    http代理的含义和作用科普

    http代理的含义和作用科普,爬虫是需要使用到http代理的,一些商家刷单也会使用到http代理,或者是刷广告,或者是刷票,刷流量等等,这些都是要使用http代理的,可见作用非常多。

  • 06 2019-03
    代理IP与爬虫的关系分析,爬虫使用的IP池需要多少代理IP?

    信息时代,网络数据非常多,我们即使要做个小的数据分析,也是需要抓取非常多的网页来分析结果,这单靠人工获取数据是不现实的,因此大家都是使用各种采集器或者直接使用爬虫去爬取数

  • 27 2019-03
    QQIP代理是怎样运营的?

    QQ上的IP代理是比较常见的一种软件,可以给你提供定时的切换,或者是挂上你的QQ号。别因为有很多的人并不了解这种QQIP代理应该怎样使用?下面就对这样的一个情况进行一个介绍,让你再了

  • 31 2019-05
    快速切换ip不影响网络使用

    如果要快速切换ip不影响网络使用,还需要使用IP切换软件的。在如今的信息时代我们无时无刻都在使用互联网,而用来连接互联网的终端设备都会有一个ip地址,主要是用来确认终端设备的具体位

  • 06 2019-05
    改本地ip地址的几种方法

    改本地ip地址的几种方法,大家知道哪几种呢?使用代理IP更换IP地址是比较快的方法,而且能更换的IP也多,还有路由器更换IP地址,这是最常见的方法之一,我们一起去看看:

  • 24 2019-04
    普通匿名代理IP是否能隐藏好我们的IP地址?

    普通匿名代理IP是否能隐藏好我们的IP地址?这一点大家是否有深入的了解过呢?很多人使用免费代理的时候,其实都没有考虑过这个问题的。

在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
HTTP代理IP爬虫
客服电话
13318873961