urllib庫傳送get和post請求

2022-04-16 03:49:04 字數 2013 閱讀 5855

urllib是python中內建的傳送網路請求的乙個庫(包),在python2中由urllib和urllib2兩個庫來實現請求的傳送,但是在python中已經不存在urllib2這個庫了,已經將urllib和urllib2合併為urllib。

urllib是乙個庫(包),request是urllib庫裡面用於傳送網路請求的乙個模組

1.傳送乙個不攜帶引數的get請求

import

urllib.request

#發起乙個不攜帶引數的get請求

response=urllib.request.urlopen('

')print

(response.reason)

#呼叫status屬性可以此次請求響應的狀態碼,200表示此次請求成功

print

(response.status)

#呼叫url屬性,可以獲取此次請求的位址

print

(response.url)

print

(response.headers)

#由於使用read方法拿到的響應的資料是二進位制資料,所有需要使用decode解碼成utf-8編碼

#print(response.read().decode('utf-8'))

2.傳送乙個攜帶引數的get請求

import

urllib.request

import

urllib.parse

##定義出基礎**

base_url='

'#構造乙個字典引數

data_dict=

#使用urlencode這個方法將字典序列化成字串,最後和基礎**進行拼接

data_string=urllib.parse.urlencode(data_dict)

print

(data_string)

new_url=base_url+"

?"+data_string

response=urllib.request.urlopen(new_url)

print(response.read().decode('

utf-8

'))

3.構造乙個攜帶引數的post請求

import

urllib.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編碼

import

urllib.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...