requests庫

Request

  • pip3 install requestsweb

  • res = requests.get(url,params) 獲取響應網頁對象,params以字典形式向url傳參,value值爲None不會傳入。json

    import requests
    params = {'name':'km','age':22}
    headers = {'Server':'likun'}
    res = requests.get('http://httpbin.org/get',params=params,stream=True,headers=headers)
    • res.text 打印響應內容瀏覽器

    • res.encoding 當前響應使用的編碼,能夠從新賦值改變使用本身合適的編碼服務器

    • res.content 二進制響應內容cookie

    • res.json() json響應內容session

    • res.raw 獲取原始響應數據,需在get請求中加參數stream=Trueide

    • res.headers 獲取請求頭函數

      • res = requests.get(url,params,headers=headers) 本身添加請求頭post

    • res.cookies 獲取cookies性能

      • 若是想發送cookies到服務器,能夠使用cookies參數

        cookies = {'cookies_are':'working'}
        res = requests.get('http://httpbin.org/cookies',cookies=cookies)
        print(res.text)
        ​
        {"cookies": {"cookies_are": "working"}}
    • res.status_code 狀態碼

      • res.status_code == requests.codes_ok 內置的狀態碼查詢,200返回True

      • res.raise_for_status() 若是發送錯誤的4xx或5xx請求,能夠用這個函數拋出異常

    res = requests.get('http://httpbin.org/status/404')
    print(res)
    res.raise_for_status() 
  • requests.post(url,params) post傳數據

    • 發送以表單形式的數據,data參數以字典形式上傳

      data = {'key1':'value1','key2':'value2','key2':'value3'}#同一key值自動處理在一塊兒
      res = requests.post('http://httpbin.org/post',data=data)
      {
        ...
        "form": {
          "key1": [
            "value1",
            "value2"
          ]
        },
        ...
      }
    • 流式上傳,發送大文件時無需先把它們讀入內存。

      with open('massive-body','rb') as f:
          requests.post('http://some.url/streamed',data=f)
    • res.request.post('http://httpbin.org/post',files=files) files二進制上傳

      files = {'file':open('1.jpg','rb')}
      res = requests.post('http://httpbin.org/post',files=files)
  • 證書驗證:Requests 能夠爲 HTTPS 請求驗證 SSL 證書,就像 web 瀏覽器同樣。SSL 驗證默認是開啓的,若是證書驗證失敗,Requests 會拋出 SSLError: requests.exceptions.SSLError 報錯。

    • 也能夠爲verify傳入CA_BUNDLE 文件路徑,或者包含可信任 CA 證書文件的文件夾路徑:

    • 改成False除去證書驗證

    import requests
    from requests.packages import urllib3
    urllib3.disable_warnings() #調用這個包消除警告信息
    res = request.get('http://www.12306.cn',verify=False)
    print(res.status_code)
    ​
    200
    • cert參數指定本地證書做爲客戶端證書,能夠是單個文件(包含密鑰和證書)或一個包含兩個文件路徑的元組:

      requests.get('https://kennethreitz.org', cert=('/path/client.cert', '/path/client.key'))
      <Response [200]>
  • 設置代理:proxies 參數設置代理ip

    proxies = {
            'http':'http://127.0.0.1:9743',
            'https':'https://127.0.0.1:9743'
            }
    res = requests.get('http://www.taobao.com',proxies=proxies)
    • 有用戶名的代理

      proxies = {'http':'http://user:password@127.0.0.1:9743/'}
  • 超時設置:timeout 參數

    res = res = requests.get('http://www.taobao.com',timeout=1)
  • 異常處理:requests.exceptions基類

  • 會話對象,會話維持:會話對象能夠讓你保持鏈接狀態,跨站請求保持某些參數。它是一個Session實例,這個實例會在全部的請求之間保持cookie。因此若是你向同一主機發送多個請求,底層的TCP會被重用,從而帶來顯著地性能提高。

    • 同一會話中的鏈接狀態都是持久的,urllib3自動處理

    #跨站保持cookies
    import requests
    s = requests.Session()
    s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
    res = s.get("http://httpbin.org/cookies")
    print(res.text)
    '{"cookies": {"sessioncookie": "123456789"}}'
  • 會話對象也能夠爲請求方法傳參
s.headers.update({'x-test': 'true'})#添加新的值
res = s.get('http://httpbin.org/headers', headers={'x-test2': 'true'})
{
  "headers": {
    "Accept-Encoding": "identity", 
    "Connection": "close", 
    "Cookie": "sessioncookie=123456789", 
    "Host": "httpbin.org", 
    "X-Test": "true", 
    "X-Test2": "true"
  }
}

  持續更...                     

相關文章
相關標籤/搜索