urllib是python中內建的傳送網路請求的乙個庫(包),在python2中由urllib和urllib2兩個庫來實現請求的傳送,但是在python中已經不存在urllib2這個庫了,已經將urllib和urllib2合併為urllib。
urllib是乙個庫(包),request是urllib庫裡面用於傳送網路請求的乙個模組
1.傳送乙個不攜帶引數的get請求
importurllib.request
#發起乙個不攜帶引數的get請求
response=urllib.request.urlopen('
(response.reason)
#呼叫status屬性可以此次請求響應的狀態碼,200表示此次請求成功
(response.status)
#呼叫url屬性,可以獲取此次請求的位址
(response.url)
(response.headers)
#由於使用read方法拿到的響應的資料是二進位制資料,所有需要使用decode解碼成utf-8編碼
#print(response.read().decode('utf-8'))
2.傳送乙個攜帶引數的get請求
importurllib.request
import
urllib.parse
##定義出基礎**
base_url='
'#構造乙個字典引數
data_dict=
#使用urlencode這個方法將字典序列化成字串,最後和基礎**進行拼接
data_string=urllib.parse.urlencode(data_dict)
(data_string)
new_url=base_url+"
?"+data_string
response=urllib.request.urlopen(new_url)
print(response.read().decode('
utf-8
'))
3.構造乙個攜帶引數的post請求
importurllib.request
import
urllib.parse
#測試**:
#定義乙個字典引數
data_dict=
#使用urlencode將字典引數序列化成字串
data_string=urllib.parse.urlencode(data_dict)
#將序列化後的字串轉換成二進位制資料,因為post請求攜帶的是二進位制引數
last_data=bytes(data_string,encoding='
utf-8')
#如果給urlopen這個函式傳遞了data這個引數,那麼它的請求方式則不是get請求,而是post請求
response=urllib.request.urlopen("
",data=last_data)
#我們的引數出現在form表單中,這表明是模擬了表單的提交方式,以post方式傳輸資料
print(response.read().decode('
utf-8
'))
4.補充:
如果直接將中文傳入url中請求,會導致編碼錯誤。我們需要使用quote() ,對該中文關鍵字進行url編碼
importurllib.request
city=urllib.request.quote('
鄭州市'.encode('
utf-8'))
response=urllib.request.urlopen('
'.format(city))
print(response.read().decode('
utf-8
'))
02 urllib庫的get請求方式
對於urllib中的get請求方式,可以直接傳入url的連線即可訪問頁面,但是對於要傳入關鍵字的話,也可以用quote進行編碼再傳入。案例如下 1 get請求搜尋引數如何新增 2import urllib.request 3try 4 url 5 注意 在urllib 中這種的headers 是需要...
form表單中method的get和post區別
一 問題的提出 也就是說post方式提交表單,引數分為兩部分 一部分是action中的引數放在位址列 另一部分是表單中的引數放在請求的頭中 所以所有的資料後台全部能獲得。對於get方式,伺服器端用request.querystring獲取變數的值,對於post方式,伺服器端用request.form...
laravel中如何區分get資料和post資料
可能有時候會碰到這樣的場景 有乙個post提交請求,請求位址為 id 10,提交的post資料為 id 20 而在控制器中,我要同時得到get和post中資料 get中的id為10,而post中的id為20 這兩個id分別要如何取出來?結合 as 和 冰糖雪梨 兩位的回答,總結一下 一 僅只取get...