Python 中一個易用的網絡請求庫html
r = requests.get('https://api.github.com/events') r = requests.post('http://httpbin.org/post', data = {'key':'value'}) r = requests.put('http://httpbin.org/put', data = {'key':'value'}) r = requests.delete('http://httpbin.org/delete') r = requests.head('http://httpbin.org/get') r = requests.options('http://httpbin.org/get')
# 字典裏值爲 None 的鍵都不會被添加到 URL 的查詢字符串裏 payload = {'key1': 'value1', 'key2': 'value2'} r = requests.get("http://httpbin.org/get", params=payload)
import requests r = requests.get('https://api.github.com/events') print(r.text) # [{"id":"8462576403"}] print(r.encoding) # utf-8
import requests r = requests.get('https://api.github.com/events') print(r.content)
import requests r = requests.get('https://api.github.com/events') print(r.json()) # [{'id': '8462617752'}]
import requests r = requests.get('https://api.github.com/events', stream=True) print(r.raw) # <urllib3.response.HTTPResponse object at 0x10c813550>
import requests url = 'https://api.github.com/some/endpoint' headers = {'user-agent': 'my-app/0.0.1'} r = requests.get(url, headers=headers) print(r) # <Response [404]>
import requests import json # 表單 payload = {'key1': 'value1', 'key2': 'value2'} r = requests.post("http://httpbin.org/post", data=payload) print(r.text) # JSON url = 'https://api.github.com/some/endpoint' payload = {'some': 'data'} r = requests.post(url, data=json.dumps(payload)) print(r.text) # JSON 2.4.2 版的新加功能 url = 'https://api.github.com/some/endpoint' payload = {'some': 'data'} r = requests.post(url, json=payload) print(r.text)
import requests url = 'http://httpbin.org/post' files = {'file': open('test.txt', 'rb')} r = requests.post(url, files=files) print(r.text)
import requests r = requests.get('http://httpbin.org/get') print(r.status_code) # 200 print(requests.codes.ok) # 常量,表明 200 print(requests.codes.not_found) # 常量,表明 404 bad_r = requests.get('http://httpbin.org/status/404') print(bad_r.status_code) # 404 bad_r.raise_for_status() # 錯誤請求 拋出異常
import requests r = requests.get('http://httpbin.org/get') print(r.headers) print(r.headers['Content-Type']) # application/json print(r.headers['content-type']) # application/json
import requests # 獲取 cookie url = 'http://httpbin.org/cookies' r = requests.get(url) print(r.cookies) # 設置 cookie url = 'http://httpbin.org/cookies' cookies = dict(cookies_are='working') r = requests.get(url, cookies=cookies) print(r.text)
import requests # 追蹤重定向 r = requests.get('http://github.com') print(r.history) # [<Response [301]>] # 禁用重定向 r = requests.get('http://github.com', allow_redirects=False) print(r.status_code) # 301
import requests r = requests.get('http://github.com', timeout=0.001)
Requests
會拋出一個 ConnectionError
異常。HTTP
請求返回了不成功的狀態碼, Response.raise_for_status()
會拋出一個 HTTPError
異常。Timeout
異常。TooManyRedirects
異常。Requests
顯式拋出的異常都繼承自 requests.exceptions.RequestException
。