1. 程式人生 > >python3 requests模組用法例項

python3 requests模組用法例項

python3的網路模組相對python2真的方便了很多,requests一個包就包含了python2的多個包,這從例項說明requests用法,作為複習和以後的參考。
requests並不是python預設安裝的,沒安裝使用pip install requests安裝便是,下面是requests使模組使用例項。

GET獲取網頁內容

import requests

r = requests.get("https://www.bobobk.com/vip_parse")
print("狀態碼:\n%d" % r.status_code)  #狀態碼
print(r.headers[
'content-type']) #頭部編碼 print("網頁內容:\n%s" % r.content.decode("utf8")[:100])#content返回原始資料為byte型別,這裡utf8解碼輸出 print("網頁內容:\n%s" % r.text[:100])#text返回str型別

如果帶有引數的url呢,也很簡單,requests為了方便,不需要你寫很長的url到get裡面,使用params={url=“https://www.bobobk.com”,id=“1”}這種形式即可
當然你非要寫很長的也是可以的,完全沒問題。

POST資料

post資料也非常簡單,data引數,字典裡面寫上需要post的資料

import requests
r = requests.post('https://httpbin.org/post', data = {'key':'value'})

新增資料頭

有時網站可能限制了user agent(UA),你直接用預設引數使用的UA是包含了requests的,所以如果修改頭的話就是

import requests
headers = {'user-agent': 'Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10'
} url="https://httpbin.org/get" r = requests.get(url, headers=headers,timeout=5) #或者使用timeout設定延時

基礎驗證

有的時候如果網站使用了基礎驗證的話,只需要新增auth引數即可

r = requests.get(url, headers=headers,timeout=5,auth=HTTPBasicAuth('username', 'password'))
#由於httpbasicauth比較普遍,python允許不謝驗證方法,如下
r = requests.get(url, headers=headers,timeout=5,auth=('username', 'password'))

GET下載檔案

r = requests.get('https://www.bobobk.com/wp-content/uploads/2018/12/wizard.webp')
f = open('download.webp', 'wb')
for chunk in r.iter_content(chunk_size=512 * 1024): 
    if chunk: 
            f.write(chunk)
    f.close()

此處使用的方法使用與大檔案的下載

post檔案

當然也是可以直接post檔案的,新增引數files,用法

url = 'https://httpbin.org/post'
files = {'file': ('myfile.xls', open('myfile.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
r = requests.post(url, files=files)

使用cookie

直接指定cookie引數即可

url = 'https://httpbin.org/cookies'
r = requests.get(url, cookies={"username":"bobobk"})
#如果是網頁返回包含cookie,也可以方便的獲取到cookie
r.cookies