在上一節(jié),使用了Python自帶的功能啟動(dòng)了一個(gè)HTTP服務(wù)器,并通過瀏覽器瀏覽到了這個(gè)HTTP服務(wù)器提供的頁面。在瀏覽的過程中,實(shí)際上是瀏覽器向HTTP服務(wù)器發(fā)送了一個(gè)HTTP請求。
除了使用瀏覽器發(fā)送HTTP請求,通過代碼也可以向HTTP服務(wù)器發(fā)送請求,Python提供了相關(guān)的庫urllib,通過urllib包里面的request,可以向其他HTTP服務(wù)器發(fā)起請求。
from urllib import request response = request.urlopen('http://idcbgp.cn') # 向慕課網(wǎng)官網(wǎng)發(fā)出請求 print(response) # ==> <http.client.HTTPResponse object at 0x000001377D631948>
請求成功的話,會(huì)得到一個(gè)HTTPResponse,它是來自HTTP服務(wù)器的一個(gè)回應(yīng),可以把這個(gè)回應(yīng)的一些信息打印出來。
狀態(tài)碼:
print(response.status) # ==> 200
狀態(tài)碼是一個(gè)三位整數(shù),在HTTP協(xié)議的標(biāo)準(zhǔn)里面,定義了很多狀態(tài)碼,其中200表示請求是正常的。
響應(yīng)頭:
?for k, v in response.getheaders(): print('{}: {}'.format(k, v))
將會(huì)輸出以下信息,這是HTTPResponse附帶的一些信息,包括服務(wù)端的服務(wù)器是什么、請求時(shí)間、內(nèi)容類型、內(nèi)容長度等等。
Server: openresty Date: Thu, 20 Aug 2020 08:16:07 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 376639 Connection: close Vary: Accept-Encoding Vary: Accept-Encoding X-Varnish: 280516221 281284036 Age: 29 Via: 1.1 varnish (Varnish/6.0) X-Cache: HIT from CS42 Accept-Ranges: bytes
請使用Python自帶的功能,啟動(dòng)一個(gè)HTTP服務(wù)器,并使用urllib請求這個(gè)服務(wù)器,打印出狀態(tài)碼和回應(yīng)頭,并嘗試分析這些信息。
1. 請?jiān)诒镜鼐帉懘a練習(xí)
2. 通過python -m http.server啟動(dòng)一個(gè)HTTP服務(wù)器
3. 通過urllib request請求對應(yīng)的地址
請驗(yàn)證,完成請求
由于請求次數(shù)過多,請先驗(yàn)證,完成再次請求
打開微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報(bào)