Python中requests.get用法樣本

來源:互聯網
上載者:User


例子。

@@ -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)
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.