<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          爬蟲|如何在scrapy請求異常之后再設(shè)置代理IP

          共 1295字,需瀏覽 3分鐘

           ·

          2020-10-26 20:30

          我們都知道 scrapy 可以設(shè)置代理 IP,但是不知道大家有沒有遇到這樣一個場景:

          常規(guī)的代理 IP 設(shè)置,會對每個請求都生效,也就是說每個請求都會去使用代理

          但是有些請求根本不需要代理,我希望當我的請求出現(xiàn)錯誤或超時的時候再去設(shè)置代理 IP

          這樣既節(jié)省了資源,又縮短了請求的時間,畢竟有些代理質(zhì)量真的一言難盡

          那么怎么才能讓它請求超時的時候,再使用代理 IP 進行重新請求呢?

          很容易就想到下載中間件,DowmloaderMiddleware

          一個介于 request, response 中間的鉤子,用于修改 request 和處理 response

          首先我們需要捕獲超時等異常的請求,在下載中間件中添加如下代碼:

          from?twisted.internet.error?import?TCPTimedOutError,?TimeoutError

          def?process_exception(self,?request,?exception,?spider):
          ????????if?isinstance(exception,?TimeoutError):
          ????????????self.process_request_back(request,?spider)??#?連接超時才啟用代理ip機制
          ????????????return?request

          ????????elif?isinstance(exception,?TCPTimedOutError):
          ????????????self.process_request_back(request,?spider)
          ????????????return?request

          以上代碼的作用就是捕獲異常請求,同時調(diào)用設(shè)置代理 IP 的函數(shù),并返回該請求

          下面的設(shè)置 IP 的代碼

          def?process_request_back(self,?request,?spider):
          ????????request.meta["proxy"]?=?xun.proxy
          ????????request.headers["Proxy-Authorization"]?=?xun.headers

          注意不能使用 process_request() 方法, 如果代理添加在該方法下,就是常規(guī)的代理 IP 方法

          同時對于 scrapy 出現(xiàn) TimeoutError,TCPTimedOutError 等異常的時候,還可以通過以下幾種方案來解決:

          主要通過設(shè)置文件來更改

          1、降低同時請求的數(shù)量

          CONCURRENT_REQUESTS?=?5

          2、 增加超時時間

          DOWNLOAD_TIMEOUT?=?300

          3、 增加異常重試次數(shù)

          RETRY_TIMES?=?5


          第四種就是開頭所講的,在請求超時后再添加代理 IP

          你學廢了嗎?

          歡迎大家一起討論




          需要您的一個在看?

          瀏覽 104
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人毛片在线观看 | 亚洲成人色图专区 | 免费乱伦视频 | 亚洲天堂在线视频观看 | 久草久热精品视频 |