Python3之Requests模組詳解
阿新 • • 發佈:2019-01-03
# 匯入 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