Python基於scrapy採集資料時使用代理伺服器的方法

mmz_77 發表於 2022-06-17
Python

今天這篇文章主要給大家介紹下Python基於scrapy採集資料時使用代理伺服器的方法,涉及Python使用代理伺服器的技巧,具有一定參考借鑑價值,需要的朋友可以參考下。

在我們訪問任何網站之前,都需要對網站進行分析,最主要的是分析網站的是否有反爬機制,因為反爬機制的嚴格與否對我們獲取的速度和數量都有一定的影響。在應對反爬機制的時候除了使用代理IP以外還有一個基本的隨機ua的新增,做爬蟲都應該對這個不陌生。 在Python爬蟲的過程中經常要模擬UserAgent, 因此自動生成UserAgent十分有用通過UA來判斷不同的裝置或者瀏覽器是開發者最常用的方式方法,這個也是對於Python反爬的一種策略。但是我們今天重點講的是代理IP的使用,對那些反爬機制特別嚴的網站,大家肯定在找適合代理的時候很費精力,今天就給大家解決這個問題,推薦億牛雲代理,自營線路,電信專線IP池,代理速度,延遲都是一級棒。特別是需求高的業務,更是能滿足需求。這裡主要推薦他們家提供的爬蟲代理隧道模式的,真的是yyds,關於使用方式,不同的語言使用有稍微的區別,這裡給大家示例 scrapy爬蟲程式代理IP的實現過程:

import base64            
        import sys
        import random
        PY3 = sys.version_info[0] >= 3
        def base64ify(bytes_or_str):
            if PY3 and isinstance(bytes_or_str, str):
                input_bytes = bytes_or_str.encode('utf8')
            else:
                input_bytes = bytes_or_str
            output_bytes = base64.urlsafe_b64encode(input_bytes)
            if PY3:
                return output_bytes.decode('ascii')
            else:
                return output_bytes
        class ProxyMiddleware(object):                
            def process_request(self, request, spider):
                # 代理伺服器(產品官網 )
                proxyHost = "t.16yun.cn"
                proxyPort = "31111"
                # 代理驗證資訊
                proxyUser = "username"
                proxyPass = "password"
                request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)
                # 新增驗證頭
                encoded_user_pass = base64ify(proxyUser + ":" + proxyPass)
                request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass                    
                # 設定IP切換頭(根據需求)
                tunnel = random.randint(1,10000)
                request.headers['Proxy-Tunnel'] = str(tunnel)

關於其他語言寫的程式如何使用代理,大家可以去官網具體瞭解下: 以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31522063/viewspace-2901271/,如需轉載,請註明出處,否則將追究法律責任。