標籤:value eth out iss 擷取 display get 接受 post
一、requests庫簡介
requests是Python的一個HTTP相關的庫
requests安裝:
pip install requests
二、GET請求
import requests # 首先匯入reqeusts模組res = requests.get( # 使用requests類比瀏覽器發送一個get請求 url="https://www.baidu.com", # 指定訪問的網址)# 列印響應內容:網站的原始碼print(res.text)# 列印二進位響應內容;我們在拉取音樂、視頻等使用print(res.content)
reqeusts初體驗
我們發送get請求時,如果URL參數需要攜帶參數,那麼資料會以鍵/值對的方式置於URL中,跟在一個問號的後面,例如:ttps://www.baidu.com/s?wd=hello
import requests#get請求,攜帶參數資訊#http://httpbin.org/get?key1=value1&key2=value2payload = {‘key1‘: ‘value1‘, ‘key2‘: ‘value2‘}r = requests.get("http://httpbin.org/get", params=payload)print(r.text)get請求url攜帶參數
你還可以將一個列表作為值傳入:
#http://httpbin.org/get?key1=value1&key2=value2&key2=value3payload = {‘key1‘: ‘value1‘, ‘key2‘: [‘value2‘, ‘value3‘]}r = requests.get("http://httpbin.org/get", params=payload)傳輸多個值得時候三、POST請求
通常,如果你想要發送一些編碼為表單形式得資料的時候,只需要簡單的給request的data傳遞一個字典即可。你的資料在發送請求時會自動編碼為表單形式:
import requestspayload = {‘key1‘: ‘value1‘, ‘key2‘: ‘value2‘}# 類似我們的請求體中的資料r = requests.post("http://httpbin.org/post", data=payload)print(r.text)post請求
很多時候,你想發送出去的資料並非編碼為表單形式,如果你想傳輸一個json字串,而不是一個字典,那麼資料會被直接發送過去
例如,Github API v3 接受編碼為 JSON 的 POST/PATCH 資料:
import requestsimport jsonpayload = {‘some‘: ‘data‘}url = ‘https://api.github.com/some/endpoint‘r = requests.post(url, data=json.dumps(payload))print(r.text)post請求發送一個json字串四、requests參數總結
:param method: 要求方法 :param url: 目標地址的URL :param params: 請求參數:可以是字串、位元組、字典 :param data: 可以是字典、字串、位元組、檔案對象,發送的時候會在請求體中攜帶 :param json: 將json中對應的資料進行序列化成一個字串,在請求體中發送給伺服器,並且Content-Type是 {‘Content-Type‘: ‘application/json‘} :param headers: 要求標頭資料 :param cookies: 請求攜帶的cookie :param files: 向伺服器傳送檔案資料 :param auth: Auth tuple以啟用基本的/摘要/自訂http auth。 :param timeout: 等待伺服器回應時間,可以是浮點數 :param allow_redirects: 是否允許自動重新導向,True(預設),Flase :param proxies: 字典映射協議到代理的URL。 :param verify: 控制我們是驗證伺服器的TLS認證,還是字串,在這種情況下,它必須是CA包的路徑才能使用。預設為“True”。 :param stream: 是否以流的形式讀取伺服器傳來的資料 :param cert: 如果是字串,則為SSL用戶端認證檔案(.pem)的路徑。如果是元組,(‘cert’,‘key’)對。五、響應
import requestsimport jsonpayload = {‘some‘: ‘data‘}url = ‘https://api.github.com/some/endpoint‘r = requests.post(url, data=json.dumps(payload))# 擷取回應標頭print(r.headers)print(r.headers[‘Content-Type‘]) # ‘application/json‘print(r.headers.get(‘content-type‘)) # ‘application/json‘# 擷取響應cookieprint(r.cookies[‘example_cookie_name‘])print(r.cookies.get_dict())# 擷取響應體print(r.text)# 擷取響應體(二進位形式)print(r.content)# 重新導向與請求曆史print(r.url)print(r.status_code) # 響應狀態代碼print(r.history)# json響應內容print(r.json()) # [{u‘repository‘: {u‘open_issues‘: 0, u‘url‘: ‘https://github.com/...
Python爬蟲---requests庫快速上手