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
urllib模組是python自帶的,直接呼叫就好,用法如下:國際化網域名稱和 urls
keep-alive & 連線池
持久的 cookie 會話
類瀏覽器式的 ssl 加密認證
基本/摘要式的身份認證
優雅的鍵/值 cookies
自動解壓
unicode 編碼的響應體
多段檔案上傳
連線超時
支援 .netrc
適用於 python 2.6—3.4
執行緒安全
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.開啟遠端檔案 幾乎可以像開啟本地檔案一樣開啟遠端檔案,差別是只能...