30天拿下Python之requests模塊

概述

在上一節(jié)猛拴,我們介紹了Python的logging模塊,包括:logging的基本使用香缺、logging的選項設(shè)置、日志旋轉(zhuǎn)歇僧、logging.Filter類等內(nèi)容图张。在這一節(jié),我們將介紹Python的requests模塊诈悍。requests模塊是Python中最常用的HTTP客戶端庫之一祸轮,因為它簡單易用,功能強大写隶,并可以發(fā)送各種類型的HTTP請求倔撞,包括:POST、GET慕趴、PUT等。requests模塊不是Python的標(biāo)準(zhǔn)庫鄙陡,我們可以通過pip包管理器進行安裝冕房。

發(fā)送POST請求

使用requests.post()函數(shù)可以發(fā)送HTTP POST請求,并返回一個Response對象趁矾。該對象包含響應(yīng)的各種信息耙册,比如:狀態(tài)碼、響應(yīng)頭毫捣、響應(yīng)體等详拙。requests.post()函數(shù)可以通過data參數(shù)傳遞要發(fā)送的數(shù)據(jù),通過timeout參數(shù)傳遞超時的時間蔓同。

import requests

# 要發(fā)送的自定義數(shù)據(jù)
data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://www.baidu.com', data = data, timeout = 2)

# 檢查響的應(yīng)狀態(tài)碼
if response.status_code == 200:
    print('success')
    print(response.text)
else:
    print('failed, status code is:', response.status_code)

如果想發(fā)送Json格式的請求體饶辙,可以使用json參數(shù)代替data參數(shù),requests模塊會自動將Python對象轉(zhuǎn)換為Json格式斑粱。

import requests  
  
json_data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://www.test.com/api/test', json = json_data)

發(fā)送GET請求

使用requests.get()函數(shù)可以發(fā)送HTTP GET請求弃揽,并返回一個Response對象。

import requests

response = requests.get('https://www.baidu.com/')
# 輸出狀態(tài)碼
print(response.status_code)
# 輸出響應(yīng)頭
print(response.headers)
# 輸出響應(yīng)體的文本內(nèi)容
print(response.text)

在GET請求中,參數(shù)通常作為查詢字符串附加在URL的末尾矿微。而在POST請求中痕慢,參數(shù)通常作為請求體發(fā)送。因此涌矢,在使用requests.post()函數(shù)時掖举,我們通過data參數(shù)傳遞要發(fā)送的數(shù)據(jù)。而在使用requests.get()函數(shù)時娜庇,我們通過params參數(shù)傳遞查詢參數(shù)塔次。

import requests  
  
# 可以替換為目標(biāo)URL
url = 'https://www.test.com/api/test'
# 要傳遞的查詢參數(shù)
params = {'key': 'value'}
response = requests.get(url, params = params, timeout = 2)
  
# 檢查響應(yīng)的狀態(tài)碼
if response.status_code == 200:
    print('success')
    print(response.text)
else:
    print('failed, status code is:', response.status_code)

設(shè)置請求頭

在requests.post()函數(shù)和requests.get()函數(shù)中,可以通過headers參數(shù)設(shè)置自定義的請求頭思灌。請求頭是一種HTTP消息頭俺叭,用于傳遞關(guān)于請求的附加信息,比如:User-Agent泰偿、Content-Type等熄守。設(shè)置請求頭可以幫助我們模擬不同的瀏覽器和客戶端,或滿足某些API的特殊要求耗跛。

import requests

url = 'https://www.test.com/api/test'
headers = {
    'User-Agent': 'Mozilla/5.0',
    'Content-Type': 'application/json'
}
response = requests.get(url, headers = headers)

會話管理

我們可以使用requests.Session()創(chuàng)建一個會話對象裕照,以進行會話管理。通過會話管理调塌,可以在同一會話中發(fā)送多個請求晋南,并共享同一份cookies、請求頭等信息羔砾。

import requests

# 創(chuàng)建會話對象
session = requests.Session()

# 發(fā)送第一個請求
url1 = 'https://www.test.com/api/test1'
response1 = session.get(url1)

# 發(fā)送第二個請求
url2 = 'https://www.test.com/api/test2'
response2 = session.post(url2, data = {'name': 'Hope'})

# 關(guān)閉會話
session.close()

在上面的示例代碼中负间,首先使用requests.Session()創(chuàng)建了一個會話對象session。然后姜凄,使用session.get()函數(shù)發(fā)送第一個GET請求到url1政溃,并使用session.post()函數(shù)發(fā)送第二個POST請求到url2。由于這些請求都是在同一個會話中發(fā)送的态秧,所以它們會共享同一份cookies和請求頭等信息董虱。最后,我們調(diào)用了session.close()函數(shù)來關(guān)閉會話申鱼。這一步是可選的愤诱,因為在Python結(jié)束時,會話對象會自動關(guān)閉捐友。但如果想在程序中間關(guān)閉會話淫半,可以使用session.close()函數(shù)來實現(xiàn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末楚殿,一起剝皮案震驚了整個濱河市撮慨,隨后出現(xiàn)的幾起案子竿痰,更是在濱河造成了極大的恐慌,老刑警劉巖砌溺,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件影涉,死亡現(xiàn)場離奇詭異,居然都是意外死亡规伐,警方通過查閱死者的電腦和手機蟹倾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來猖闪,“玉大人鲜棠,你說我怎么就攤上這事∨嗷牛” “怎么了豁陆?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吵护。 經(jīng)常有香客問我盒音,道長,這世上最難降的妖魔是什么馅而? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任祥诽,我火速辦了婚禮,結(jié)果婚禮上瓮恭,老公的妹妹穿的比我還像新娘雄坪。我一直安慰自己,他們只是感情好屯蹦,可當(dāng)我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布维哈。 她就那樣靜靜地躺著,像睡著了一般登澜。 火紅的嫁衣襯著肌膚如雪笨农。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天帖渠,我揣著相機與錄音,去河邊找鬼竭宰。 笑死空郊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的切揭。 我是一名探鬼主播狞甚,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼廓旬!你這毒婦竟也來了哼审?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涩盾,沒想到半個月后十气,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡春霍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年砸西,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片址儒。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡芹枷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出莲趣,到底是詐尸還是另有隱情鸳慈,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布喧伞,位于F島的核電站走芋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏絮识。R本人自食惡果不足惜绿聘,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望次舌。 院中可真熱鬧熄攘,春花似錦、人聲如沸彼念。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逐沙。三九已至哲思,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吩案,已是汗流浹背棚赔。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留徘郭,地道東北人靠益。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像残揉,于是被迫代替她去往敵國和親胧后。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容