前言:終於開始寫博客了,願技術隨字數增加。python
感受主流編程語言的基本語法大同小異,好比變量類型、循環、分支等。因此看了一遍Python基本語法以後,就直接上爬蟲了。學習是輸入,寫博客是輸出。輸入輸出之間,才能學得牢固一些,不至於黑大瞎子掰棒子,掰一個掉一個。學習requests是根據中國大學MOOC上的北京理工大學的公開課學的,嵩天老師講的真不錯啊。
複製代碼
cmd命令行執行 pip install requests 命令便可 編程
requests主要的的方法有7個,分別對應HTTP協議的GET、HEAD、POST、PUT、PATCH、DELETE六個+request()方法。我主要記了與爬蟲有關的2個。
複製代碼
方法名 | 參數說明 | 舉例 |
---|---|---|
requests.requests(method,url,**kwargs) | method類型,**kwargs表明13個訪問控制參數 | requests.request(get,"www.baidu.com",data) |
requests.get(url,params=None,**kwargs) | 其中params爲字典或字節流格式,會填充在url後面 | requests.get("www.baidu.com") |
特別提醒:**kwargs詳見下文第五節 json
requests.get()方法有兩個主要對象:Requests對象和Response對象瀏覽器
Requests對象是調用get()方法時發送給瀏覽器的數據對象
Response對象則是get到的瀏覽器數據對象,更重要一些(咱們更關注Response對象)。bash
Requests和Response對象主要屬性
服務器
r = resquests.get("www.baidu.com",timeout=10)
cookie
屬性 | 說明 | 舉例 |
---|---|---|
r.status_code | HTTP返回的請求狀態,200表示成功,404表示失敗 | 200 |
r.encoding | 根據HTTP返回的頭部猜想的響應內容編碼格式 | ISO-8859-1(默認) |
r.apparent_encoding | 從相應內容分析出的編碼格式 | uft-8 |
r.text | 相應內容的字符串格式 | ...... |
爬取網頁有風險,處理異常很重要。目前能力尚弱,跟着嵩天老師寫了一個簡單的方法處理異常。以下:app
def getHTML(url):
try:
r = requests.request(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return '出現異常!!!'
複製代碼
這裏對應上面的**kwargs,一共有13個,分別是timeout、params、data、json、proxies、header、auth、files、cookie、allow、redirects、cert、stream、verify。
其中前6個比較有意思也比較經常使用,記錄一下。後面的幾個用到的時候問度娘吧。
複製代碼
參數名稱 | 說明 | 舉例 |
---|---|---|
params | 填充在url後面,做爲Requests對象的一部分發送給服務器 | 舉例見下面的代碼1 |
data | 字典、字節序列或文件對象,做爲Request的內容(不懂) | 暫無 |
json | JSON格式的數據,做爲Request的內容 | 暫無 |
timeout | 設定超時時間,以秒爲單位 | timeout=10 |
header | 字典格式,HTTP定製頭 | 舉例見下面代碼2 |
proxies | 字典類型,設置代理服務器。能夠增長登陸認證,防止對爬蟲的逆追蹤 | 舉例見代碼3 |
# 代碼1
import requests
body = '123'
r = requests.request("GET", "http://www.python123.io/ws", params=body)
print(r.url)
複製代碼
輸出爲「www.python123.io/ws?123」框架
# 代碼2
import requests
hd = {"user-agent":"Chrome/10"}
r = requests.request("POST", "http://www.python123.io/ws", headers=hd)
複製代碼
表明模擬Chrome10版本的瀏覽器向服務器發送請求編程語言
# 代碼3
import requests
pxs = {"http":"http://user:pass@10.10.10.1:1234"
"https":"https://10.10.10.1:4321"}
r = requests.request("GET", "http://www.python123.io/ws", proxies=pxs)
複製代碼
好了,今天的小結先寫到這裏了,仍是心不靜啊!
日記不足,歲記有餘!
複製代碼