Requests庫
安裝Requests
pip install requests
Resquests庫的7個主要方法
方法 | 說明 |
requests.request() | 構造一個請求, 支撐以下各方法的基礎方法 |
requests.get() | 擷取HTML網頁的主要方法 |
requests.head() | 擷取HTML網頁頭資訊的方法 |
requests.post() | 向HTML網頁送出POST請求的方法 |
requests.put() | 向HTML網頁送出PUT請求的方法 |
requests.patch() | 向HTML網頁送出局部修改請求 |
requests.delete() | 向HTML頁面送出删除請求 |
一. get()方法
r = requests.get(url)
上面代碼傳回Response對象
1.1 Response對象
Response對象: 包含爬蟲傳回的内容
Response對象的屬性
屬性 | 說明 |
r.status_code | HTTP請求的傳回狀态, 200表示連結成功, 404表示失敗 |
r.text | HTTP響應内容的字元串形式, 即 url對應的頁面内容 |
r.encoding | 從HTTP header中猜測的響應内容編碼方式 |
r.apparent_encoding | 從内容中分析出的響應内容編碼方式(備選編碼方式) |
r.content | HTTP響應内容的二進制形式 |
1.2 Resquest對象
Request庫的異常
異常 | 說明 |
requests.ConnectionError | 網絡連接配接錯誤異常, 如DNS查詢失敗,拒絕連接配接等 |
requests.HTTPError | HTTP錯誤異常 |
requests.URLRequired | URL缺失異常 |
request.TooManyRedirects | 超過最大重定向次數, 産生重定向異常 |
requests.ConnectTimeout | 連接配接遠端伺服器逾時異常 |
requests.Timeout | 請求URL逾時, 産生逾時異常 |
1.3 爬取網頁的通用代碼架構
import requests
def getHTMLTest(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status() # 如果狀态不是200, 引發HTTPError異常
r.encoding = r.apparent_encoding
return r.text
except:
return "産生異常"
# 隻有在這個檔案下運作才執行, 當在其他檔案導入時是不執行的
if __name__ == '__main__':
url = "http://www.baidu.com"
print(getHTMLTest(url))
二. Request主要方法解析
requests.get(method, url, **kwargs)
**kwargs: 控制通路的參數, 均為可選項
舉例:
kv = {'key1 : 'value1', 'key2' : 'values2'}
r = requests.request('GET', 'http://python123.io/ws', params=kv)
print(r.url)
# http://python123.io/ws?key1=value1&key2=value2
#模拟Chrome10來通路網站
hd = {'User-Agent':'Chrome/10'}
r = requests.request('POST', 'http://python123.io/ws', headers=hd)
#向伺服器傳輸檔案
fs = {'file' : open('data.xls', 'rb')}
r = requests.request('POST', 'http://python123.io/ws', file=fs)
# 設定逾時時間
r = requests.request('GET', 'http://www.baidu.com', timeout=10)
pxs = {'http':'http://user:[email protected]:1231',
'https':'https://11.10.10.1:3212'}
r = requests.request('GET', 'http://www.baidu.com', proxies=pxs)
參數 | 作用 |
params | 字典或位元組序列, 作為參數增加到url中 |
data | 字典,位元組序列或檔案對象, 作為Request的内容 |
json | JSON格式的資料, 作為Request的内容 |
headers | 字典, HTTP定制頭 |
cookies | 字典或CookieJar, Request中的cookie |
auth | 元祖, 支援HTTP認證功能 |
files | 字典類型, 傳輸檔案 |
timeout | 設定的逾時時間, 秒為機關 |
proxies | 字典類型, 設定通路代理伺服器, 可以增加登入認證 |
allow_redirects:True/False | 預設為True,重定向開關 |
stream:True/False | 預設為True,擷取内容立即下載下傳開關 |
verify:True/False | 預設為True,認證SSL證書開關 |