更新時(shí)間:2023-09-06 來(lái)源:黑馬程序員 瀏覽量:
當(dāng)用戶在瀏覽器的地址欄中直接輸入某個(gè)URL地址或者單擊網(wǎng)頁(yè)上的某個(gè)超鏈接時(shí),瀏覽器會(huì)使用GET方法向服務(wù)器發(fā)送請(qǐng)求。例如,在瀏覽器的地址欄中分別輸入https://www.baidu.com/和 https://www.baidu.com/s?wd=python.按Enter鍵后打開(kāi)百度首頁(yè)和python關(guān)鍵詞的查詢結(jié)果頁(yè)面。此時(shí)我們用Fiddler工具捕獲剛剛發(fā)送的兩個(gè)請(qǐng)求,可以看到這兩個(gè)請(qǐng)求的請(qǐng)求方法都是GET。
在Requests庫(kù)中,getO函數(shù)用于向服務(wù)器發(fā)送GET請(qǐng)求。該函數(shù)會(huì)根據(jù)傳人的URL構(gòu)建一個(gè)請(qǐng)求(每個(gè)請(qǐng)求都是Request類(lèi)的對(duì)象),之后將該請(qǐng)求發(fā)送給服務(wù)器。getO函數(shù)的聲明如下:
get(url,params=None,headers=None,cookies=None,verify=True, proxies=None, timeout=None,**kwargs)
上述函數(shù)中各參數(shù)的含義如下。
url:必選參數(shù),表示請(qǐng)求的URL。
params:可選參數(shù),表示請(qǐng)求的查詢字符串。該參數(shù)支持3種類(lèi)型的取值,分別為字典、元組列表、字節(jié)序列。當(dāng)該參數(shù)的值是一個(gè)字典時(shí),字典的鍵為url參數(shù),字典的值為url參數(shù)對(duì)應(yīng)的值,例如{“ie":"utf-8","wd":"python"}。
headers:可選參數(shù),表示請(qǐng)求的請(qǐng)求頭,該參數(shù)只支持字典類(lèi)型的值。
cookies:可選參數(shù),表示請(qǐng)求的Cookie信息,該參數(shù)支持字典或CookieJar類(lèi)的對(duì)象。
verify:可選參數(shù),表示是否啟用SSL證書(shū),默認(rèn)值為T(mén)rue。
proxies:可選參數(shù),用于設(shè)置代理服務(wù)器,該參數(shù)只支持字典類(lèi)型的值。
timeout:可選參數(shù),表示請(qǐng)求網(wǎng)頁(yè)時(shí)設(shè)定的超時(shí)時(shí)長(zhǎng),以秒為單位。
下面分別以訪問(wèn)百度首頁(yè)和python關(guān)鍵詞的查詢結(jié)果頁(yè)面為例,演示如何使用get()函數(shù)發(fā)送不攜帶url參數(shù)和攜帶url參數(shù)的GET請(qǐng)求。
1.不攜帶url參數(shù)的GET請(qǐng)求
若GET請(qǐng)求的URL中不攜帶參數(shù),我們?cè)谡{(diào)用getO函數(shù)發(fā)送GET請(qǐng)求時(shí)只需要給url參數(shù)傳入指定的URL即可。例如,使用getO函數(shù)發(fā)送GET請(qǐng)求訪問(wèn)百度首頁(yè),具體代碼如下。
import requests # 準(zhǔn)備URL base_url = 'https://www.baidu.com/' # 根據(jù)URL構(gòu)造請(qǐng)求,發(fā)送GET請(qǐng)求,接收服務(wù)器返回的響應(yīng)信息 response = requests.get(url=base_url) # 查看響應(yīng)碼 print (response.status_code)
上述代碼中,首先定義了一個(gè)代表請(qǐng)求URL地址的變量base_url,然后調(diào)用requests庫(kù)中的getO函數(shù)發(fā)送GET請(qǐng)求。當(dāng)百度服務(wù)器接收到請(qǐng)求后會(huì)返回響應(yīng)信息,并將響應(yīng)信息保存到response中。最后通過(guò)訪問(wèn)response的status_code屬性查看響應(yīng)狀態(tài)碼,以確認(rèn)此次訪問(wèn)是否成功。
運(yùn)行代碼,輸出如下結(jié)果。
200
從輸出的結(jié)果可以看出,服務(wù)器返回的響應(yīng)狀態(tài)碼為200,說(shuō)明成功訪問(wèn)了百度首頁(yè)。
2.攜帶url參數(shù)的GET請(qǐng)求
如果GET請(qǐng)求的URL中攜帶參數(shù),那么我們?cè)谡{(diào)用getO函數(shù)時(shí)可以采用兩種方式發(fā)送GET請(qǐng)求。第l種方式是將參數(shù)以“?參數(shù)名l=值1&參數(shù)名2=值2.”的形式拼接到URL后面,進(jìn)而手動(dòng)構(gòu)建完整的URL,例如https://www.baidu.com/s?wd=python,并將完整的URL傳入 url參數(shù);第2種方式是將url參數(shù)轉(zhuǎn)換為字典,之后將該字典傳入params參數(shù)。
第1種方式的實(shí)現(xiàn)代碼如下。
import requests base_url ='https://www.baidu.com/s' param = 'wd=python' #拼接完整的URL full_url = base_url +'?'+ param #根據(jù)URL構(gòu)造請(qǐng)求,發(fā)送GET請(qǐng)求,接收服務(wù)器返回的響應(yīng)信息 response = requests.get(full_url) #查看響應(yīng)碼 print (response.status_code)
運(yùn)行代碼,輸出如下結(jié)果。
200
通過(guò)觀察兩次的輸出結(jié)果可知,服務(wù)器返回的響應(yīng)狀態(tài)碼都為200。這說(shuō)明我們成功訪問(wèn)了python關(guān)鍵詞的查詢結(jié)果頁(yè)面。