零基礎自學用Python 3開發網路爬蟲(五): 使用第三方模組快速抓取與解析

發表於2015-02-23

在前面的四篇文章中, 我們一直採用 python 3 自帶的 urllib  模組來抓取網頁, 然後用 re 模組來處理抓取到的資料. 這次我們使用 Requests 庫來代替 urllib, 用 BeautifulSoup 來代替 re 模組.

對於這兩個模組來說, 學習使用它們的最好方法是看官方文件, 這兩個模組的官方文件都有中文版(翻譯的不是很完整).

在 Windows 下如果安裝了 Python3, 那麼在 cmd 下直接可以通過 pip 來安裝這兩個模組, 命令如下:

在 Ubuntu 下安裝方法如下:

然後我們執行 Python3, 試一下是否能把這兩個模組 import 進來, 就知道是否安裝成功了:

Requests Module

Requests 是 Python 界大名鼎鼎的一個網路庫, 其設計哲學是為人類而設計, 所以他提供的功能都非常的人性化. 他的方便對我而言主要有兩大點:

  • 對 GET 和 POST 方法的封裝做的很好, 自動處理了編碼等問題;
  • 預設開啟了 Cookies 處理, 在處理需要登入的問題上面非常方便.

Requests 的方便之處不止這兩點, 還提供了諸如標準登入介面之類的功能, 我們暫時用不上.

總而言之, 對於使用過 urllib 的我們來說, 用 requests 會感覺我們之前生活在石器時代. 第三方庫的強大就在於這裡, 這也是 Python 這麼火的重要原因.

BeautifulSoup Module

BeautifulSoup 大大方便了我們對抓取的 HTML 資料的解析, 可以用tag, class, id來定位我們想要的東西, 可以直接提取出正文資訊, 可以全文搜尋, 同樣也支援正規表示式, 相當給力.

小試牛刀

我們隨便抓取一個頁面, 然後用 soup 來解析一下試試他的威力:

我們十分輕鬆的獲得了全文內容以及所有連結.

重訪知乎

在上一篇文章中, 我嘗試使用 urllib 和 re 獲取了知乎登入頁面的 _xsrf 引數, 這次我們通過這兩個新的模組再試一次.

開啟瀏覽器隱身模式, 開啟知乎網, 來到登入介面, 檢視原始碼, 搜尋 xsrf 字樣, 得到如下一行:

於是我們只要兩行程式碼就能搞定:

第三方庫就是這麼好用!

相關文章