Python之requests框架學習

前言:終於開始寫博客了,願技術隨字數增加。python

感受主流編程語言的基本語法大同小異,好比變量類型、循環、分支等。因此看了一遍Python基本語法以後,就直接上爬蟲了。學習是輸入,寫博客是輸出。輸入輸出之間,才能學得牢固一些,不至於黑大瞎子掰棒子,掰一個掉一個。學習requests是根據中國大學MOOC上的北京理工大學的公開課學的,嵩天老師講的真不錯啊。
複製代碼

1. 安裝requests

  cmd命令行執行 pip install requests 命令便可    編程

  在Python IDLE導入requests包時,不報錯就表示安裝成功了。

2. 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

3. requests.get()

  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 相應內容的字符串格式 ......

4. 爬取網頁的通用代碼框架

爬取網頁有風險,處理異常很重要。目前能力尚弱,跟着嵩天老師寫了一個簡單的方法處理異常。以下:app

def getHTML(url):
    try:
        r = requests.request(url)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return '出現異常!!!'
複製代碼

5. 爬取網頁的訪問控制參數

這裏對應上面的**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)
複製代碼

好了,今天的小結先寫到這裏了,仍是心不靜啊!
日記不足,歲記有餘!
複製代碼
相關文章
相關標籤/搜索