本次學習的python爬蟲所使用的是requests庫
下面就是requests庫的7種主要方法python
方法名 | 說明 |
---|---|
requests.request() | 構造一個請求,支撐如下各方法的基礎方法 |
request.get() | 獲取HTML網頁的主要方法,對應HTTP的GET |
requests.head() | 獲取HTML網頁的主要方法,對應HTTP的HEAD |
requests.post() | 向HTML網頁提交POST請求的方法,對應於HTTP的POST |
requests.put() | 向HTML網頁提交PUT請求的方法,對應於HTTP的PUT |
requests.patch() | 向HTML網頁提交局部修改請求,對應於HTTP的PATCH |
requests.delete() | 向HTML頁面提交刪除請求,對應於HTTP的DELETE |
部分語法r=requests.get(url)
表示構造一個向服務器請求資源的Request對象,返回一個包含服務器資源的Respon對象
完整語法requests.get(url,params=None,**kwargs)
shell
get()方法參數 | 說明 |
---|---|
url | 擬獲取頁面的URL連接 |
params | url中的額外參數,控制字典或字節流格式(可選) |
**kwargs | 12個控制訪問參數 |
Response對象屬性 | 說明 |
---|---|
r.status_code | HTTP請求的返回狀態,200表示連接成功404表示失敗 |
r.text | HTTP響應內容的字符串形式,即,url對應的頁面內容 |
r.encoding | 從HTTP header中猜想的響應內容編碼方式 |
r.apparent_encoding | 從內容分析出的響應內容的編碼方式(備選編碼方式) |
r.content | HTTP響應內容的二進制形式 |
基本示例json
#在python shell中進行逐行輸入 import requests r=requests.get("http://www.baidu.com") r.status_code#返回了200表示訪問成功 r.text#輸出訪問內容--發現有部分中文亂碼 r.encoding#發現編碼爲ISO-8859-1 r.apparent_encoding#發現內容編碼爲UTF-8 r.encoding = 'utf-8'#將讀取編碼改成utf-8 r.text#此時發現輸出內容正常
r.encoding:若是header中不存在charset,則認爲默認編碼爲ISO-8859-1
r.apparent_encoding:根據網頁內容分析出的編碼方式瀏覽器
異常 | 說明 |
---|---|
requests.ConnectionError | 網絡鏈接錯誤異常,如DNS查詢失敗、拒絕鏈接等 |
requests.HTTPError | HTTP錯誤異常 |
requests.URLRequired | URL缺失異常 |
requests.TooManyRedirects | 超過最大重定向次數,產生重定向異常 |
requests.ConnectTimeout | 鏈接遠程服務器超時異常 |
requests.Timeout | 請求URL超時,產生超時異常 |
Response異常服務器
異常 | 說明 |
---|---|
r.raise_for_status() | 若是不是200,產生異常 requests.HTTPError |
import requests def getHtmlText(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(getHtmlText(url))
經過r.raise_for_status()以及try--except捕捉訪問異常cookie
參數名 | 說明 |
---|---|
params | 字典或字節序列,做爲參數增長到url中 |
data | 字典,字節序列或文件對象,做爲Request的內容 |
json | JSON格式的數據,做爲Request的內容 |
headers | 字典,HTTP定製頭(模擬瀏覽器進行訪問) |
cokies | 字典或CpplieJar,Request中的cookie |
auth | 元祖,支持HTTP認證功能 |
files | 字典類型,傳輸文件 |
timeout | 設定超時時間,秒爲單位 |
proxies | 字典類型,設定訪問代理服務器,能夠增長登錄認證,防止爬蟲反追蹤 |
allow_redirects | True//False,默認爲True,重定向開關 |
stream | True/False,默認爲True,獲取內容當即下載開關 |
verify | True/False,默認爲True,認證SSL證書開關 |
cert | 本地SSL證書路徑""" |
params參數的例子:
例:kv={'key1':'value','key2':'value2'} r=requests.request('GET','http://python123.io/ws',params=kv) print(r.url)
輸出爲:http://python.io/ws?key1=value1&key2=value2網絡
語法 | 可選額外控制參數 |
---|---|
requests.get(url, params=None, **kwargs) | 12 |
requests.head(url, **kwargs) | 12 |
requests.post(url, data=None, json=None, **kwargs) | 12 |
requests.put(url, data=None, **kwargs) | 12 |
requests.patch(url, data=None, **kwargs) | 12 |
requests.delete(url, **kwargs) | 12 |