urllib和request的區別總結

2021-08-16 21:18:57 字數 3558 閱讀 5364

r = request(url='')

r.add_header('user-agent', 'awesome fetcher')

r.add_data(urllib.urlencode()

response = urllib2.urlopen(r) #post method

import requests

...resp = requests.get('')

userdata =

resp = requests.post('', params=userdata)

resp = requests.put('/put')

resp = requests.delete('/delete')

resp.json() # 假如返回的是json資料

resp.text #返回的不是text資料

resp.headers['content-type'] #返回text/html;charset=utf-8

f = open('request_index.html', 'w')

f.write(page.encode('utf8'))

#test 發現requests抓下來的頁面必須要編碼\

#寫入,(抓下來的是unicode),urllib和urllib2抓下來可以直接寫入,

#因為這兩者抓下來的page是str

國際化網域名稱和 urls

keep-alive & 連線池

持久的 cookie 會話

類瀏覽器式的 ssl 加密認證

基本/摘要式的身份認證

優雅的鍵/值 cookies

自動解壓

unicode 編碼的響應體

多段檔案上傳

連線超時

支援 .netrc

適用於 python 2.6—3.4

執行緒安全

urllib模組是python自帶的,直接呼叫就好,用法如下:

1

#處理get請求,不傳data,則為get請求

2import

urllib

3from urllib.request import

urlopen

4from urllib.parse import

urlencode

5 url='

'6 data=

7 req_data=urlencode(data)#

將字典型別的請求資料轉變為url編碼

8 res=urlopen(url+'

?'+req_data)#

通過urlopen方法訪問拼接好的url

9 res=res.read().decode()#

read()方法是讀取返回資料內容,decode是轉換返回資料的bytes格式為str

10print

(res)

1112

#處理post請求,如果傳了data,則為post請求

13import

urllib

14from urllib.request import

urlopen

15from urllib.request import

request

16from urllib.parse import

urlencode

17 url='

'18 data=

19 data=urlencode(data)#

將字典型別的請求資料轉變為url編碼

20 data=data.encode('

ascii

')#將url編碼型別的請求資料轉變為bytes型別

21 req_data=request(url,data)#

將url和請求資料處理為乙個request物件,供urlopen呼叫

22with urlopen(req_data) as res:

23 res=res.read().decode()#

read()方法是讀取返回資料內容,decode是轉換返回資料的bytes格式為str

24print(res)

相比較urllib模組,requests模組要簡單很多,具體用法如下:

1

#get請求

2import

requests

3 url='

'4 data=

5 res=requests.get(url,data)#

直接用requests.get(url,data)即可,其中.get表示為get方法,不需要對字典型別的data進行處理6#

res=res.text#text方法是獲取到響應為乙個str,也不需要對res進行轉換等處理

7 res=res.json()#

當返回的資料是json串的時候直接用.json即可將res轉換成字典

8print

(res)910

#post請求

11import

requests

12 url='

'13 data=

14 res=requests.post(url,data)#

直接用requests.post(url,data)即可,其中.post表示為post方法,不需要對字典型別的data進行處理15#

res=res.text#text方法是獲取到響應為乙個str,也不需要對res進行轉換等處理

16 res=res.json()#

當返回的資料是json串的時候直接用.json即可將res轉換成字典

17print

(res)

1819

#當傳參格式要求為json串時

20import

requests

21 url='

'22 data=

23 res=requests.post(url,json=data)#

只需要在這裡指定data為json即可24#

res=res.text#text方法是獲取到響應為乙個str,也不需要對res進行轉換等處理

25 res=res.json()#

當返回的資料是json串的時候直接用.json即可將res轉換成字典

26print

(res)

2728

#傳參含cookie

29import

requests

30 url='

'31 data=

32 cookie=

33 res=requests.post(url,json=data,cookies=cookie)#

只需要在這裡指定cookies位cookie即可,headers,files等類似

34 res=res.json()

35print(res)

requests和urllib的區別

基本的區別是獲得的response 1.傳送get請求,例如 r requests.get 2.傳送post請求,例如 r requests.post 3.得到的響應內容 就是指get傳送以後的請求 響應的內容包含響應行 響應報頭 響應正文。響應正文 r.content 通用版 可以自動轉出成取文字...

request和requestScope的區別

1 request物件通常用來接收從客戶端通過表單提交過來的資料,然後在servlet或者action中用request.getparameter 的方法獲取獲取引數內容 2 而requestscope通常是在servlet和action中通過request.setattribute 方法把資料放到...

網路程式設計之urllib和urllib2

在可供使用的網路庫中,urllib和urllib2可能是投入產出比最高的兩個。它們讓你能夠通過網路訪問檔案,就像這些檔案位於你的計算機一樣。只需要乙個簡單的函式呼叫,就幾乎可將統一資源定位符 url 可指向的任何動作作為程式的輸入。1.開啟遠端檔案 幾乎可以像開啟本地檔案一樣開啟遠端檔案,差別是只能...