如何在scrapy请求异常之后再设置代理IP

技术如何在scrapy请求异常之后再设置代理IP如何在scrapy请求异常之后再设置代理IP,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。我们都知道 s

针对这个问题,本文详细介绍了相应的分析和解决方法,希望能帮助更多想要解决这个问题的伙伴找到更简单易行的方法。

我们都知道scrapy可以设置代理IP,但是不知道大家有没有遇到过这样的场景:

常规代理IP设置将对每个请求生效,这意味着每个请求都将使用代理。

但是有些请求根本不需要代理,所以希望在我的请求出错或者超时的时候设置代理IP。

这不仅节省了资源,而且缩短了请求时间。毕竟有些机构质量真的一言难尽。

那么,当请求超时时,我们如何使用代理IP发出新的请求呢?

很容易想到下载中间件,DowmloaderMiddleware。

请求、响应之间的挂钩用于修改请求和处理响应。

首先,我们需要捕获超时等异常请求,并在下载中间件中添加以下代码:

来自twisted . internet . error importtcptimeduerror,TimeoutError

defprocess_exception(自身、请求、异常、蜘蛛):

ifisinstance(异常,超时错误):

自我。process _ request _ back (request,spider) #代理ip机制仅在连接超时时启用。

返回请求

elifisinstance(异常,tcptimeduerror):

self.process_request_back(请求,蜘蛛)

返回请求

上述代码的功能是捕获异常请求,同时调用设置代理IP的功能,返回请求。

下面是设置IP的代码。

defprocess_request_back(自我、请求、蜘蛛):

request . meta[' proxy ']=Xun . proxy

request . header[' Proxy-Authorization ']=Xun . header

请注意,不能使用process_request()方法。如果在此方法下添加代理,则是常规的代理IP方法。

同时,当暂存中存在TimeoutError、TCPTimedOutError等异常时,可以采用以下解决方案:

主要是通过设置文件来改变。

1、降低同时请求的数量

COMPONENT _ REQUESTS=5

2、 增加超时时间

DOWNLOAD_TIMEOUT=300

00-1010 retry _ times=5划痕请求异常后如何设置代理IP的答案在此分享,希望。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/54427.html

(0)

相关推荐

  • Linux中执行一个mv命令后悔了怎么办

    技术Linux中执行一个mv命令后悔了怎么办这篇文章给大家分享的是有关Linux中执行一个mv命令后悔了怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。翻车现场由于今天在安装完node之后

    攻略 2021年11月20日
  • 操作虚拟仿真需要什么能力(在线仿真与软件仿真的主要区别)

    技术的软件仿真和硬件仿真指的是什么本篇文章给大家分享的是有关的软件仿真和硬件仿真指的是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、软件仿真

    攻略 2021年12月24日
  • 如何实现JavaScript函数式的浅析

    技术如何实现JavaScript函数式的浅析这篇文章给大家介绍如何实现JavaScript函数式的浅析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。JS函数式浅析0x00 入门的导语(废话)最近两年

    攻略 2021年11月16日
  • Lotus系统中CS与BS有什么区别

    技术Lotus系统中CS与BS有什么区别这篇文章主要为大家展示了“Lotus系统中CS与BS有什么区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Lotus系统中CS与BS

    攻略 2021年12月3日
  • 如何安装xtrabackup

    技术如何安装xtrabackup这篇文章主要为大家展示了“如何安装xtrabackup”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何安装xtrabackup”这篇文章吧。

    攻略 2021年11月6日
  • 如何远程连接MYSQL

    技术如何远程连接MYSQL这篇文章将为大家详细讲解有关如何远程连接MYSQL,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。启动MYSQL[root@zhangruiu1 ~]# mys

    攻略 2021年11月1日