1. 程式人生 > >Python3之Requests模組詳解

Python3之Requests模組詳解

# 匯入 Request模組
# 若本機無自帶Request模組,可自行下載或者使用pip進行安裝
# python版本Python3
import requests
import json

#######################Get請求#######################

# 傳送無引數的get請求
baiDu_response = requests.get('http://www.baidu.com')

# 傳送無引數的get請求 設定超時時間 timeout 單位秒
baiDu_response = requests.get('http://www.baidu.com'
, timeout=1) # 檢視傳送請求的url地址 print('無引數的get請求地址為: ' + baiDu_response.url) # 檢視當前返回狀態碼 # 若狀態碼為200 等同於 baiDu_response.status_code == requests.codes.ok 返回為True print('返回的狀態碼為: '+str(baiDu_response.status_code)) # 檢視當前返回內容編碼 print('返回內容編碼格式為:' + baiDu_response.encoding) # 檢視當前返回內容 text返回的是字串 print('Text返回的資料內容為:'
+ baiDu_response.text) # 檢視當前返回內容 content返回的是位元組流 # print('Content返回的資料內容為:' + baiDu_response.content) # 若返回內容為json格式 可用如下語句 # print('返回的Json資料為:' + baiDu_response.json()) # 獲取伺服器返回的原始資料 增加stream=True # data = requests.get('https://api.github.com/events', stream=True) # print(data.raw.read()) # 傳送帶引數(字典形式)的get請求
sendDictParams = {'key1': 'value1', 'key2': 'value2'} baiDu_dictParams_response = requests.get('http://www.baidu.com', params=sendDictParams) # 檢視傳送請求的url地址 print('普通引數的get請求地址為: ' + baiDu_dictParams_response.url) # 傳送list格式引數的get請求 sendListParams = {'key1': 'value1', 'key2': ['value2', 'value3']} baiDu_listParams_response = requests.get('http://www.baidu.com', params=sendListParams) # 檢視傳送請求的url地址 print('帶list引數的get請求地址為: ' + baiDu_listParams_response.url) #######################Post請求####################### # tips:強烈建議使用二進位制模式開啟檔案,因為如果以文字檔案格式開啟時,可能會因為“Content-Length”這個header而出錯 # post 請求引數是通過data方式來傳遞的 # 第一種方式:字典格式 postResponse = requests.post("http://pythontab.com/postTest", data={'key': 'value'}) print('普通引數請求返回狀態碼為:' + str(postResponse.status_code)) # 第二種方式 json格式 注意json方法為dumps() 不是dump() jsonParams = {'key': 'value'} postJsonResponse = requests.post("http://pythontab.com/postTest", data=json.dumps(jsonParams)) print('json引數請求返回狀態碼為:' + str(postJsonResponse.status_code)) # 第三種方式 傳送檔案 (該檔案同級目錄下需要有test.csv檔案 )rb 只讀模式 wb 若沒有 自動建立 files = {'file': open('test.csv', 'rb')} fileResponse = requests.post('http://pythontab.com/postTest', files=files) print('檔案引數請求返回狀態碼為:' + str(fileResponse.status_code)) #######################Headers####################### headers_response = requests.get('http://www.baidu.com') # 檢視請求響應頭 :字典格式 輸入時轉換為字元列印到控制檯 print('請求響應頭為: ' + str(headers_response.headers)) # 獲取請求響應頭其中某一個引數 print('請求響應頭的Server引數 寫法一:' + headers_response.headers['Server']) # 等同於 print('請求響應頭的Server引數 寫法二:' + headers_response.headers.get('Server')) # 自定義headers 併發送 headers = {'user-agent': 'myAgent'} custom_headers_response = requests.get('http://www.baidu.com', headers=headers) print('自定義header傳送請求狀態碼為:' + str(custom_headers_response.status_code)) #######################Cookies####################### cookies_response = requests.get('http://www.baidu.com') # 檢視請求響應頭 :字典格式 輸入時轉換為字元 print('請求地址的Cookies為: ' + str(cookies_response.cookies)) # 自定義Cookies 併發送 cookies = {'user-cookies': 'myCookies'} custom_cookies_response = requests.get('http://www.baidu.com', cookies=cookies) print('自定義Cookies傳送請求狀態碼為:' + str(custom_cookies_response.status_code)) #######################代理####################### proxies = { "http": "http://10.10.1.10:3128", "https": "http://10.10.1.10:1080", } # 通過代理方式發起請求 此處執行不通過,僅舉例使用 # requests.get("http://baidu.com", proxies=proxies) #######################Session####################### # 通過requests獲取session session = requests.Session() # 舉例:登入名 密碼  key為登陸表單中對應的input的name值 login_data = {'email': '[email protected]', 'password': 'password'} # 傳送資料 session.post("http://pythontab.com/testLogin", login_data) # 獲取傳送的session session_response = session.get('http://pythontab.com/notification/') print('session請求返回的狀態碼為:' + str(session_response.status_code)) #######################下載頁面####################### baiDuHtmlContent = requests.get("http://www.baidu.com") with open("百度.html", "wb") as html: html.write(baiDuHtmlContent.content) html.close()

執行結果

這裡寫圖片描述

參考:www.pythontab.com/html/2017/pythonjichu_0510/1138.html