上一篇文章: Python3網絡爬蟲實戰---二、請求庫安裝:GeckoDriver、PhantomJS、Aiohttp
下一篇文章:Python3網絡爬蟲實戰---數據庫的安裝:MySQL、MongoDB、Redis
抓取下網頁代碼以後,下一步就是從網頁中提取信息,提取信息的方式有多種多樣,可使用正則來提取,可是寫起來會相對比較繁瑣。在這裏還有許多強大的解析庫,如 LXML、BeautifulSoup、PyQuery 等等,提供了很是強大的解析方法,如 XPath 解析、CSS 選擇器解析等等,利用它們咱們能夠高效便捷地從從網頁中提取出有效信息。python
本節咱們就來介紹一下這些庫的安裝過程。git
LXML 是 Python 的一個解析庫,支持 HTML 和 XML 的解析,支持 XPath 解析方式,並且解析效率很是高。github
pip3 install lxml
若是產生錯誤,能夠執行以下命令將必要的類庫安裝:數據庫
xcode-select --install
以後再從新運行 Pip 安裝就沒有問題了。segmentfault
LXML 是一個很是重要的庫,後面的 BeautifulSoup、Scrapy 框架都須要用到此庫,因此請必定安裝成功。api
安裝完成以後,能夠在 Python 命令行下測試。xcode
$ python3 >>> import lxml
若是沒有錯誤報出,則證實庫已經安裝好了。服務器
BeautifulSoup 是 Python 的一個 HTML 或 XML 的解析庫,咱們能夠用它來方便地從網頁中提取數據,它擁有強大的 API 和多樣的解析方式,本節咱們瞭解下它的安裝方式。網絡
BeautifulSoup 的 HTML 和 XML 解析器是依賴於 LXML 庫的,因此在此以前請確保已經成功安裝好了 LXML 庫,具體的安裝方式參見上節。框架
目前 BeautifulSoup 的最新版本是 4.x 版本,以前的版本已經中止開發了,推薦使用 Pip 來安裝,安裝命令以下:
pip3 install beautifulsoup4
命令執行完畢以後便可完成安裝。
安裝完成以後能夠運行下方的代碼驗證一下。
from bs4 import BeautifulSoup soup = BeautifulSoup('<p>Hello</p>', 'lxml') print(soup.p.string)
運行結果:
Hello
若是運行結果一致則證實安裝成功。
注意在這裏咱們雖然安裝的是 beautifulsoup4 這個包,可是在引入的時候是引入的 bs4,這是由於這個包源代碼自己的庫文件夾名稱就是 bs4,因此安裝完成以後,這個庫文件夾就被移入到咱們本機 Python3 的 lib 庫裏,因此識別到的庫文件名稱就叫作 bs4,因此咱們引入的時候就引入 bs4 這個包。
所以,包自己的名稱和咱們使用時導入的包的名稱並不必定是一致的。
PyQuery 一樣是一個強大的網頁解析工具,它提供了和 jQuery 相似的語法來解析 HTML 文檔,支持 CSS 選擇器,使用很是方便,本節咱們瞭解下它的安裝方式。
pip3 install pyquery
安裝完成以後,能夠在 Python 命令行下測試。
$ python3 >>> import pyquery
若是沒有錯誤報出,則證實庫已經安裝好了。
爬蟲過程當中不免會遇到各類各樣的驗證碼,而大多數驗證碼仍是圖形驗證碼,這時候咱們能夠直接用 OCR 來識別。
OCR,即 Optical Character Recognition,光學字符識別。是指經過掃描字符,而後經過其形狀將其翻譯成電子文本的過程。那麼對於圖形驗證碼來講,它都是一些不規則的字符,可是這些字符確實是由字符稍加扭曲變換獲得的內容。
例如這樣的驗證碼,如圖 1-22 和 1-23 所示:
圖 1-22 驗證碼
圖 1-23 驗證碼
對於這種驗證碼,咱們即可以使用 OCR 技術來將其轉化爲電子文本,而後爬蟲將識別結果提交給服務器,即可以達到自動識別驗證碼的過程。
Tesserocr 是 Python 的一個 OCR 識別庫,但實際上是對 Tesseract 作的一層 Python API 封裝,因此它的核心是 Tesseract,因此在安裝 Tesserocr 以前咱們須要先安裝 Tesseract,本節咱們來了解下它們的安裝方式。
Mac 下首先使用 Homebrew 安裝 Imagemagick 和 Tesseract 庫:
brew install imagemagick brew install tesseract
接下來再安裝 Tesserocr 便可:
pip3 install tesserocr pillow
這樣咱們便完成了 Tesserocr 的安裝。
接下來咱們可使用 Tesseract 和 Tesserocr 來分別進行測試。
下面咱們以以下的圖片爲樣例進行測試,如圖 1-26 所示:
圖 1-26 測試樣例
圖片連接爲:https://raw.githubusercontent...,能夠直接保存或下載。
咱們首先用命令行進行測試,將圖片下載保存爲 image.png,而後用 Tesseract 命令行測試,命令以下:
tesseract image.png result -l eng && cat result.txt
運行結果:
Tesseract Open Source OCR Engine v3.05.01 with Leptonica Python3WebSpider
咱們調用了 tesseract 命令,第一個參數爲圖片名稱,第二個參數 result 爲結果保存的目標文件名稱,-l 指定使用的語言包,在此使用 eng 英文,而後再用 cat 命令將結果輸出。
第二行的運行結果即是圖片的識別結果,Python3WebSpider。
咱們能夠看到這時已經成功將圖片文字轉爲電子文本了。
而後咱們還能夠利用 Python 代碼來測試,這裏就須要藉助於 Tesserocr 庫了,測試代碼以下:
import tesserocr from PIL import Image image = Image.open('image.png') print(tesserocr.image_to_text(image))
若是在運行期間python3閃退,出現下面錯誤:
!strcmp(locale, "C"):Error:Assert failed:in file baseapi.cpp, line 209就須要這樣運行了:
import locale locale.setlocale(locale.LC_ALL,'C') import tesserocr from PIL import Image image = Image.open('image.png') print(tesserocr.image_to_text(image))
在這裏咱們首先利用 Image 讀取了圖片文件,而後調用了 tesserocr 的 image_to_text() 方法,再將將其識別結果輸出。
運行結果:
Python3WebSpider
另外咱們還能夠直接調用 file_to_text() 方法,也能夠達到一樣的效果:
import tesserocr print(tesserocr.file_to_text('image.png'))
運行結果:
Python3WebSpider
若是成功輸出結果,則證實 Tesseract 和 Tesserocr 都已經安裝成功。
上一篇文章: Python3網絡爬蟲實戰---二、請求庫安裝:GeckoDriver、PhantomJS、Aiohttp 下一篇文章:Python3網絡爬蟲實戰---數據庫的安裝:MySQL、MongoDB、Redis