1. 程式人生 > >【python爬蟲筆記】網路爬蟲之規則

【python爬蟲筆記】網路爬蟲之規則

WEEK1

Unit 1 Requests庫入門

Requests庫的get()方法

Requests庫的7個主要方法

  • reqest() 構造一個請求,支撐一下各方法的基礎方法
  • get() 獲取html網頁的主要方法,對應於http的get
  • head() 獲取html網頁頭資訊的方法,對應於http的head
  • post() 向html網頁提交post請求的方法,對應於http的post
  • put() 向html網頁提交put請求的方法,對應於http的put
  • patch() 向html網頁提交區域性修改請求,對應於http的patch
  • delete() 向html網頁提交刪除請求,對應於http的delete

Response物件包含伺服器返回的所有資訊,也包含請求的Request資訊

Response物件屬性

  • r.status_code HTTP請求的返回狀態
  • r.text HTTP響應內容的字串形式,即URL對應的頁面內容
  • r.encoding 從HTTP header中猜測的響應內容編碼方式
  • r.apparent_encoding 從內容中分析出的響應內容編碼方式(備選編碼方式)
  • r.content HTTP響應內容的二進位制形式

r.encoding:如果header中不存在charset,則認為編碼為ISO-8859-1

r.text根據r.encoding顯示網頁內容

r.apparent_encoding:可以看作r.encoding的備選


爬取網頁的通用程式碼框架
理解Requests庫的異常
  • requests.ConnectionError 網路連線錯誤,如DNS查詢失敗,拒絕連線
  • requests.HTTPError HTTP錯誤異常
  • requests.URLRequired URL缺失異常
  • requests.TooManyRedirects 超過最大重定向次數,產生重定向異常
  • requests.ConnectionTimeout 連線遠端伺服器超時異常
  • requests.Timeout 請求URL異常,產生超時異常

r.raise_for_status()在方法內部判斷r.status_code是否等於200,不需要增加額外的if語句,該語句便於利用try-catch進行異常處理

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 "異常產生"


HTTP協議及Requests庫方法
Requests庫的7個主要方法
  • request() 構造一個請求,支撐一下各方法的基礎方法
  • get() 獲取HTML網頁
  • head() 獲取HTML網頁頭部資訊
  • post() 向HTML網頁提交POST請求
  • put() 向HTML網頁提交PUT請求
  • patch() 想HTML網頁提交區域性修改
  • delete() 向HTML頁面提交刪除請求

PATCH和PUT的區別:

  • 假設URL位置有一組資料UserInfo,包括userID、userName等20個欄位
  • 需求:使用者修改了userName,其他不變
  • PATCH:僅向URL提交userName的區域性更新請求
  • PUT :必須將20個欄位一併提交到URL,未提交欄位被刪除
Requests庫主要方法解析

request(method, url, **kwargs) 其餘幾個方法都是基於此

  • method 請求方式,對應有get/pt/post等7種
  • url 擬獲取頁面的url連結
  • **kwargs 控制訪問的引數,共13個,均為可選項
    • params 字典或位元組序列,作為引數增加到url中
    • data 字典、位元組序列或檔案物件,作為Requests的內容
    • json JSON格式的資料,作為Requests的內容
    • 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證書開關
    • cert 本地SSl證書路徑


Unit 2 網路爬蟲的“盜亦有道”

網路爬蟲的限制
  • 來源審查:判斷User-Agent進行限制。檢查來訪HTTP協議頭的User-Agent域,只響應瀏覽器或友好爬蟲的訪問
  • 釋出公告:Robots協議。告知所有爬蟲網站的爬取策略,要求爬蟲遵守
Robots協議
  • 作用:網站告知網路爬蟲哪些頁面可以抓取,哪些不行
  • 形式:在網站根目錄下的robots.txt檔案

Robots協議的使用

  • 網路爬蟲:自動或人工識別robots.txt,再進行內容爬取
  • 約束性:Robots協議是建議但非約束性,網路爬蟲可以不做手,但存在法律風險

原則: 類人行為可不參考Robots協議