• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    request中如何添加代理配置

    先領會防止爬蟲被反的兩個策略;在進行request代辦署理設置。

    東西/原料

    • 瀏覽器、電腦

    方式/步調

    1. 1

      飯爬蟲第一招:

      動態設置User-Agent(隨機切換User-Agent,模擬分歧用戶的瀏覽器信息)

      然后,采用 random隨機模塊的choice方式隨機選擇User-Agent,這樣每次請求城市從中選擇,請求很頻仍的話就多找幾個user-agent。

      def load_page(url, form_data):

          USER_AGENTS = [

              "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",

              "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",

              "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",

              "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)",

              "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6",

              "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1",

              "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0",

              "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5"

          ]

       

          user_agent = random.choice(USER_AGENTS)

           

          headers = {

              'User-Agent':user_agent

          }

    2. 2

      反爬蟲第二招:

      利用IP地址池:VPN和代辦署理IP,此刻大部門網站都是按照IP來ban的。

      因為良多網站會檢測某一段時候某個IP的拜候次數(經由過程流量統計,系統日記等),若是拜候次數多的不像正常人,它會禁止這個IP的拜候。

      所以我們可以設置一些代辦署理辦事器,每隔一段時候換一個代辦署理,就算IP被禁止,依然可以換個IP繼續爬取。

      urllib2中經由過程ProxyHandler來設置利用代辦署理辦事器

      ProxyHandler處置器(代辦署理設置): 這樣就設置了一個無需認證的代辦署理

      import urllib2

      #設置一個代辦署理hander

      httpproxy_handler = urllib2.ProxyHandler({"http" : "124.88.67.81:80"})

       

      opener = urllib2.build_opener(httpproxy_handler)

       

      request = urllib2.Request("http://www.baidu.com/")

       

      response = opener.open(request)

       

      print response.read()

    3. 3

      若是代辦署理IP足夠多,就可以隨機選擇一個代辦署理去拜候網站。

      import urllib2

      import random

       

      proxy_list = [

          {"http" : "124.88.67.81:80"},

          {"http" : "124.88.67.81:80"},

          {"http" : "124.88.67.81:80"},

          {"http" : "124.88.67.81:80"},

          {"http" : "124.88.67.81:80"}

      ]

       

      # 隨機選擇一個代辦署理

      proxy = random.choice(proxy_list)

      # 利用選擇的代辦署理構建代辦署理處置器對象

      httpproxy_handler = urllib2.ProxyHandler(proxy)

       

      opener = urllib2.build_opener(httpproxy_handler)

       

      request = urllib2.Request("http://www.baidu.com/")

      response = opener.open(request)

      print response.read()

    4. 4

      requset 模塊設置代辦署理方式:

      A、通俗代辦署理

      import requests# 按照和談類型,選擇分歧的代辦署理

      proxies = { 

       "http": "http://12.34.56.79:9527",  

      "https": "http://12.34.56.79:9527",

       }

       response = requests.get("http://www.baidu.com", proxies = proxies)

      print response.text

    5. 5

      B、私密代辦署理

      import requests

      # 若是代辦署理需要利用HTTP Basic Auth,可以利用下面這種格局:

      proxy = { "http": "賬號:暗碼@61.158.163.130:16816" }

      response = requests.get("http://www.baidu.com", proxies = proxy)

      print response.text

    6. 6

      Google Cache 和 Baidu Cache:若是可能的話,利用谷歌/百度等搜刮引擎辦事器頁面緩存獲取頁面數據。

    7. 7

      利用 Crawlera(專用于爬蟲的代辦署理組件),準確設置裝備擺設和設置下載中心件后,項目所有的request都是經由過程crawlera發出。

    注重事項

    • 注重代碼復制是否犯錯,避免呈現行不通的環境。
    • 發表于 2019-05-17 21:21
    • 閱讀 ( 1209 )
    • 分類:其他類型

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆