天天看點

python requests庫 總結

python requests

​​官方文檔​​

一、介紹

Requests 是⽤Python語⾔編寫,基于urllib,采⽤Apache2 Licensed開源協定的 HTTP 庫。它⽐ urllib 更加⽅便,可以節約我們⼤量的⼯作,完全滿⾜HTTP測試需求。

⼀句話——Python實作的簡單易⽤的HTTP庫

二、基本用法

1. 執行個體

用 GET方法請求網頁,得到一個 response 對象,并傳回類型,狀态碼,響應體類型、内容、cookies。

import requests

r = requests.get('https://www.baidu.com/')
print(type(r))      # response類型
print(r.status_code)    # 狀态碼
print(type(r.text))     # 相應體内容
print(r.text)           # 内容
print(r.cookies)        # cookies
print(type(r.headers), r.headers) # 響應頭
print(type(r.url), r.url)     # 請求位址
print(type(r.history), r.history) # 請求曆史      

其他請求類型的實作:

import requests

r = requests.post('http://httpbin.org/post')
r = requests.put('http://httpbin.org/put')
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/head')
r = requests.options('http://httpbin.org/options')      

2. GET 方法(參數的使用)

  • 附加額外資訊(params)
import requests
data = {
    'name' : 'germey',
    'age' : 22
}
r = requests.get('http://httpbin.org/get', params=data)
print(r.text)       # json 格式的字元串
print(r.json())     # 将 json 格式的字元串 轉字典      
  • 添加請求頭
import requests
headers = {
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
# 加入請求頭
r = requests.get('http://www.zhihu.com/explore', headers=headers)      
  • 抓取二進制檔案(寫入檔案)
import requests
import re
r = requests.get('http://www.github.com/favicon.ico')
print(r.text)       # str 類型        (兩種屬性)
print(r.content)    # 位元組類型
with open('favicon.ico', 'wb') as f:
    f.write(r.content)      

三、進階用法

1.檔案上傳

import requests
import re

files = {
    'file' : open('favicon.ico', 'rb')
}
r = requests.post('http://httpbin.org/post', files=files)
print(r.text)      

2. Cookies

擷取 Cookies

import requests

r = requests.get('https://www.baidu.com')
print(r.cookies)
for key, value in r.cookies.items():
  print(key + '=' + value)      

可以用 cookies 維持登陸狀态,先登入,再将 cookies 複制下來當作 headers

3. 會話維持

Session 對象會幫助我們維護一個會話。經常用于在同一個浏覽器打開不同頁面。

import requests

s = requests.Session()
r = s.get('http://httpbin.org/cookies/set/number/123456789')
print(r.text)      

4. 代理設定

import requests

# http 代理
proxies = {     # 代理位址隻是舉例子
    "http" : "http://10.10.1.10:3128",
    "https" : "http://10.10.1.10.1080",
}

# 需要認證的:
proxies = {     # 代理位址隻是舉例子
    "http" : "http://user:[email protected]:3128",
}

# socks 代理
proxies = {     # 代理位址隻是舉例子
    "http" : "socks5://user:password@host:port",
}

requests.get('http://www.taobao.com', proxies=proxies)      

5. 逾時設定

import requests

r = requests.get('http://www.taobao.com', timeout=(5.11, 30))