超詳細Python爬虫類紹介(Requestsリクエスト)--学習ノート

7496 ワード

目次
一、爬虫類の紹介
二、爬虫類の基本操作方法
1、GET要求
2、POST要求
3、Requestsモジュールのその他の方法
4、Requestを直接使う
5、セッションオブジェクト
一、爬虫類の紹介
インターネット情報をキャプチャする自動化されたプログラムは、インターネットから私たちにとって価値のある情報をキャプチャし、理論的には、ネットワーク通信をサポートする言語はすべて爬虫類を書くことができ、爬虫類自体は言語関係は大きくないが、相対的に簡単である.現在、多くの爬虫類はバックグラウンドスクリプト言語で書かれていますが、pythonは間違いなく最も広く使われています.
二、爬虫類の基本操作方法
-Requestsブロックのインストールと使用
Requestsは、Apache 2 Licensedライセンスを使用したPythonベースのHTTPライブラリで、Python内蔵モジュールを高度にカプセル化したもので、Pythonerがネットワークリクエストを行う際に、非常に美しくなり、Requestsを使用するとブラウザーで可能な操作を簡単に完了できます.
Requestsモジュールのインストール
pip3 install requests

1、GET要求
# 1、   

import requests
 
R = requests.get('https://mp.csdn.net/')
 
print R.url
print R.text
 
 
 
# 2、   
 
import requests
 
payload = {'key1': 'value1', 'key2': 'value2'}
R = requests.get("https://mp.csdn.net/", params=payload)
 
print R.url
print R.text

方向http://mp.csdn.net/GETリクエストを送信し、リクエストとレスポンスをRオブジェクトにカプセル化
2、POST要求
# 1、  POST  
 
import requests
 
payload = {'key1': 'value1', 'key2': 'value2'}
R = requests.post("http://www.qwerty.com/", data=payload)
 
print R.text
# 2、          
 
import requests
import json
 
payload = {'some': 'data'}
headers = {'content-type': 'application/json'}
 
R = requests.post('https://api.github.com/', data=json.dumps(payload), headers=headers)
 
print R.text
print R.cookies

 
3、Requestsモジュールのその他の方法
requests.get(url, params=None, **kwargs)
requests.post(url, data=None, json=None, **kwargs)
requests.put(url, data=None, **kwargs)
requests.head(url, **kwargs)
requests.delete(url, **kwargs)
requests.patch(url, data=None, **kwargs)
requests.options(url, **kwargs)
 
#                 
requests.request(method, url, **kwargs)

requestsモジュールは、一般的なHttpリクエストメソッドをユーザーにカプセル化し、ユーザーが提供する対応するメソッドを直接呼び出すことができます.メソッドのすべてのパラメータは次のとおりです.
def request(method, url, **kwargs):
    """Constructs and sends a :class:`Request `.

    :param method: method for the new :class:`Request` object.
    :param url: URL for the new :class:`Request` object.
    :param params: (optional) Dictionary or bytes to be sent in the query string for the :class:`Request`.
    :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`.
    :param json: (optional) json data to send in the body of the :class:`Request`.
    :param headers: (optional) Dictionary of HTTP Headers to send with the :class:`Request`.
    :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`.
    :param files: (optional) Dictionary of ``'name': file-like-objects`` (or ``{'name': ('filename', fileobj)}``) for multipart encoding upload.
    :param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth.
    :param timeout: (optional) How long to wait for the server to send data
        before giving up, as a float, or a :ref:`(connect timeout, read
        timeout) ` tuple.
    :type timeout: float or tuple
    :param allow_redirects: (optional) Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.
    :type allow_redirects: bool
    :param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
    :param verify: (optional) whether the SSL cert will be verified. A CA_BUNDLE path can also be provided. Defaults to ``True``.
    :param stream: (optional) if ``False``, the response content will be immediately downloaded.
    :param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair.
    :return: :class:`Response ` object
    :rtype: requests.Response

    Usage::

      >>> import requests
      >>> req = requests.request('GET', 'http://httpbin.org/get')
      
    """

    # By using the 'with' statement we are sure the session is closed, thus we
    # avoid leaving sockets open which can trigger a ResourceWarning in some
    # cases, and look like a memory leak in others.
    with sessions.Session() as session:
        return session.request(method=method, url=url, **kwargs)

4、Requestを直接使う
request.request(method,url,**kwargs)メソッド
  • method:提出方式
  • url:コミットアドレス
  • params:URLで渡されるパラメータ---GET
  • data:要求体に伝達されたデータ
  • json:要求体に伝達されたデータ
  • headers:要求ヘッダ
  •  cookies:          Cookies
  • files:ファイルのアップロード
  • auth:基本認知(headersに暗号化されたユーザ名とパスワードを追加)
  • timeout:要求と応答のタイムアウト時間
  •  allow_redirects:リダイレクトを許可するかどうか
  • proxies:プロキシ
  • verify:証明書(ブール値)
  • を無視するかどうか
  • cert:証明書ファイル
  • stream:大ファイルセグメント転送
  • requests.request(
            method='GET',
            url= 'http://www.baidu.com',
            params = {'k1':'v1','k2':'v2'},
            data = {'use':'alex','pwd': '123','x':[11,2,3]},
            json = {'use':'alex','pwd': '123'},
            headers={
                    'Referer': 'http://dig.chouti.com/',
                    'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
            }
    
    )
    
    

     
    5、セッションオブジェクト
    インタフェースのテストを行うときに、複数のインタフェースを呼び出して複数のリクエストを発行します.これらのリクエストでは、cookies情報などの共通のデータを維持する必要がある場合があります.
    requestsライブラリのセッションオブジェクトは、リクエストにまたがっていくつかのパラメータを保持したり、同じセッションインスタンスで発行されたすべてのリクエストの間でcookiesを保持したりすることができます.
    #     session   
    s = requests.Session() 
    #  session    get  ,  cookies 
    s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') 
    #  session        get  ,  cookies 
    r = s.get("http://httpbin.org/cookies") 
    
    '''
    #      
    r.text 
     '{"cookies": {"sessioncookie": "123456789"}}'
    '''

    requestsライブラリのsessionオブジェクトは、sessionオブジェクトのプロパティを設定することによって、リクエストメソッドのデフォルトデータを提供することもできます.
    #     session   
    s = requests.Session() 
    #   session   auth  ,            
    s.auth = ('user', 'pass') 
    #   session headers  ,  update  ,         headers                headers 
    s.headers.update({'x-test': 'true'}) 
    #     ,      auth     session   auth  ,   headers    session   headers     
    r = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'}) 
    #            
    r.request.headers
    
    '''
               :
    {'Authorization': 'Basic dXNlcjpwYXNz', 'x-test': 'false'}
    '''

    メソッド・レイヤのパラメータは、セッションのパラメータを上書きします.
    上記のリクエストにauthパラメータを追加します.
    r = s.get('http://httpbin.org/headers', auth=('user','hah'), headers={'x-test2': 'true'})
    
    
    '''
    
             
    {'Authorization': 'Basic dXNlcjpoYWg=', 'x-test': 'false'}
    
    '''

    リクエストリクエストではセッションオブジェクトに設定されている属性を省略し、単純にメソッドレイヤパラメータでそのキーの値をNoneに設定するだけで、そのキーは自動的に省略されます.
     
     
    爬虫類:武沛斉ブログ