例子。
@@ -0,0 +1,22 @@
+__author__ = 'tanteng'
+
+import requests
+
+def testrequests():
+
+ url = 'http://www.x.com/index/pyrequests'
+
+ params = {
+ 'x':'xxxx',
+ 'y':'yyyy'
+ }
+
+ re = requests.get(url,params)
+
+ return re
+
+
+if __name__ == '__main__':
+ re = testrequests()
+ print(re.text)
+
簡單的例子:
想象下我們試圖使用get方法從http://example.test/擷取資源並且查看傳回碼,content-type頭資訊,還有response的主體內容。這件事無論使用urllib2 或者Requests都是很容易實現的。
urllib2
>>> import urllib2
>>> url = 'http://example.test/'
>>> response = urllib2.urlopen(url)
>>> response.getcode()
200
>>> response.headers.getheader('content-type')
'text/html; charset=utf-8'
>>> response.read()
'Hello, world!'
Requests
>>> import requests
>>> url = 'http://example.test/'
>>> response = requests.get(url)
>>> response.status_code
200
>>> response.headers['content-type']
'text/html; charset=utf-8'
>>> response.content
u'Hello, world!'
這兩種方法很相似,相對於urllib2調用方法讀取response中的屬性資訊,Requests則是使用屬性名稱來擷取對應的屬性值。
兩者還有兩個細微但是很重要的差別:
1 Requests 自動的把返回資訊有Unicode解碼
2 Requests 自動儲存了返回內容,所以你可以讀取多次,而不像urllib2.urlopen()那樣返回的只是一個類似檔案類型只能讀取一次的對象。
第二點是在python互動式環境下作業碼很令人討厭的事情
發送帶參數的get請求,將key與value放入一個字典中,通過params參數來傳遞,其作用相當於urllib.urlencode
>>> import requests
>>> pqyload = {'q':'楊彥星'}
>>> r = requests.get('http://www.so.com/s',params = pqyload)
>>> r.url
u'http://www.so.com/s?q=%E6%9D%A8%E5%BD%A6%E6%98%9F'
發送post請求,通過data參數來傳遞,
>>> payload = {'a':'楊','b':'hello'}
>>> r = requests.post("http://httpbin.org/post", data=payload)
>>> print r.text
{
"args": {},
"data": "",
"files": {},
"form": {
"a": "u6768",
"b": "hello"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "19",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.3.0 CPython/2.6.6 Windows/7",
"X-Request-Id": "c81cb937-04b8-4a2d-ba32-04b5c0b3ba98"
},
"json": null,
"origin": "124.192.129.84",
"url": "http://httpbin.org/post"
}
>>>
可以看到,post參數已經傳到了form裡,data不光可以接受字典類型的資料,還可以接受json等格式
>>> payload = {'a':'楊','b':'hello'}
>>> import json
>>> r = requests.post('http://httpbin.org/post', data=json.dumps(payload))
五、傳送檔案的post類型,這個相當於向網站上傳一張圖片,文檔等操作,這時要使用files參數
>>> url = 'http://httpbin.org/post'
>>> files = {'file': open('touxiang.png', 'rb')}
>>> r = requests.post(url, files=files)
5.1 定製headers,使用headers參數來傳遞
>>> import json
>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}
>>> headers = {'content-type': 'application/json'}
>>> r = requests.post(url, data=json.dumps(payload), headers=headers)