首頁(yè)常見問(wèn)題正文

怎樣給瀏覽器發(fā)送GET請(qǐng)求?

更新時(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鍵后打開百度首頁(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類的對(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種類型的取值,分別為字典、元組列表、字節(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ù)只支持字典類型的值。

cookies:可選參數(shù),表示請(qǐng)求的Cookie信息,該參數(shù)支持字典或CookieJar類的對(duì)象。

verify:可選參數(shù),表示是否啟用SSL證書,默認(rèn)值為True。

proxies:可選參數(shù),用于設(shè)置代理服務(wù)器,該參數(shù)只支持字典類型的值。

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è)面。


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!