Requestsモジュール爬虫類

3411 ワード

Requests:サードパーティ製のネットワークリクエスト操作用のモジュールで、主に爬虫類プログラムの開発に用いられ、特に開発が簡単で、使いやすく、操作が柔軟で、開発効率が高いことで知られているため、実際のプロジェクト操作過程でrequestsモジュールは最も多くの爬虫類操作モジュールを使用している.
1.インストール
    pip install requests
    #  
    easy_install requests

簡単な爬虫類の例:
   #       
   import requests
   #          
   response = requests.get("https://www.taobao.com")
   #         
   print(response.text)

2.各種設定
  • 2.1リクエスト方式は、requestが対応する関数/スキーマメソッドを直接適用することによって、一般的にrequests.getおよびrequests.postのみを完了することができる.
  • 2.2一般パラメータ付き要求パラメータは、1つの辞書オブジェクトに含まれ、辞書オブジェクトをrequestsの関数に渡せばよい.
        # get       ,    ,  params   
        res = requests.get(URL, params = data) 
        # post       ,     ,  data   
        res = requests.post(URL, data = data)
    
  • 2.3 JSONパラメータを渡す要求の過程で、一部のURLインタフェースに必要なパラメータデータはばらばらなデータではなく、一緒にカプセル化する必要があるJSONデータであり、この時データはjsonフォーマットに変換する必要がある.
        #           
        imoprt json
        #         
        data = {“city”:”  ”} 
        #      
        json_data = json.dumps(data) 
    
        get(url, json=..)--  
        post(url, json=..)--    [     ],   data  
    
  • 2.4で返されるデータとその符号化操作で返されるデータは、データの符号化タイプに応じてバイナリデータとテキストデータに区別され、2つの異なるデータは2つの異なる属性で取得される.
    response.content:取得応答に含まれるバイナリデータresponse.text:取得応答に含まれるテキストデータに文字化けが発生した場合、responseのプロパティencodingにより、符号化の取得と指定response.encoding=「符号化(utf-8)」
  • 2.5ファイルアップロード操作requestsオブジェクトサポートファイルのデータストリーム処理は、ファイル全体をメモリにロードする必要はなく、一部を読み出して一部を渡し、requests要求のfileパラメータにファイルを指定すればよい.
    注意:ファイルのアップロード操作はpost()リクエスト方式でのみ実行できます.
      # 1.      
      import requests
      #      
      f = open(“d:/test.txt”, “r”) 
      #        
      file = {“file”:f} 
      #          
      response = requests.post(URL, files=file) 
    
      #2.        
      import requests
      #      
      with open(“d:/test.txt”, “r”) as f:    
          response = requests.post(URL, data=f) 
    
  • 2.6クッキー操作requestsモジュールではクッキーの操作をカプセル化し、応答オブジェクトのクッキー属性を直接操作することができる.
      import requests
      response = request(“http://www.badiu.com ” )  
      #     cookie 
      print(response.cookies)
      #   key      
      print(r.cookies[“key”])
    
  • 2.7要求タイムアウト設定データ操作性能に要求がある場合、timeoutパラメータデータを渡すことでタイムアウト時間の設定を行い、タイムアウト時間を超える接続で自動的に異常を放出することができる.
      import requests
      response = requests.get(“http://github.com ” , timeout=0.1)
          :requests.exceptions.ConnectTimeout
    
  • 2.8複数のリクエストを1つのセッションに含める一般的に、爬虫類操作で取得されたターゲットデータはすべて短い接続、すなわちデータを取得するときにサーバに接続され、要求を開始するたびに1つの接続であり、サーバに対する応答データを取得すると自動的に接続が切断され、再び要求を開始するとまた新しい要求オブジェクトとなる.
      import requests
      response1 =requests.get() 
      response2 = requests.get()
      #      ,            。
      #                  ,
      #  requests       Session()              。
      import requests
      req = requests.Session()
      response1 = req.get()
      response2 = req.get() 
    
  • .9 SSL証明書は、爬虫プログラムがブラウザのようにhttpsプロトコルのアクセスを検証するサイトを設定し、サイトのSSLが無効な場合、爬虫類はアクセスできないため、HTTPSのSSL証明書検証を閉じる必要があり、要求パラメータverify=Falseを設定することによってこの検証を閉じる.
      response = requests.get(URL,verify=False)   
    
  • 2.10エージェント設定はurllib 2と同様に,爬虫操作中にエージェントの設定が避けられない技術的手段である.requestsモジュールでは、プロキシサーバポートを辞書に構成し、proxiesパラメータで設定します.
      import requests
      proxies = { "https":"122.72.32.75:80" } 
      response = requests.get(URL, proxies=proxies)
      print (response.text)