1. 程式人生 > >小白學 Python 爬蟲(2):前置準備(一)基本類庫的安裝

小白學 Python 爬蟲(2):前置準備(一)基本類庫的安裝

人生苦短,我用 Python

前文傳送門:

小白學 Python 爬蟲(1):開篇

本篇內容較長,各位同學可以先收藏後再看~~

在開始講爬蟲之前,還是先把環境搞搞好,工欲善其事必先利其器嘛~~~

本篇文章主要介紹 Python 爬蟲所使用到的請求庫和解析庫,請求庫用來請求目標內容,解析庫用來解析請求回來的內容。

開發環境

首先介紹小編本地的開發環境:

  • Python3.7.4
  • win10

差不多就這些,最基礎的環境,其他環境需要我們一個一個安裝,現在開始。

請求庫

雖然 Python 為我們內建了 HTTP 請求庫 urllib ,使用姿勢並不是很優雅,但是很多第三方的提供的 HTTP 庫確實更加的簡潔優雅,我們下面開始。

Requests

Requests 類庫是一個第三方提供的用於傳送 HTTP 同步請求的類庫,相比較 Python 自帶的 urllib 類庫更加的方便和簡潔。

Python 為我們提供了包管理工具 pip ,使用 pip 安裝將會非常的方便,安裝命令如下:

pip install requests

驗證:

C:\Users\inwsy>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests

首先在 CMD 命令列中輸入 python ,進入 python 的命令列模式,然後輸入 import requests 如果沒有任何錯誤提示,說明我們已經成功安裝 Requests 類庫。

Selenium

Selenium 現在更多的是用來做自動化測試工具,相關的書籍也不少,同時,我們也可以使用它來做爬蟲工具,畢竟是自動化測試麼,利用它我們可以讓瀏覽器執行我們想要的動作,比如點選某個按鈕、滾動滑輪之類的操作,這對我們模擬真實使用者操作是非常方便的。

安裝命令如下:

pip install selenium

驗證:

C:\Users\inwsy>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import selenium

這樣沒報錯我們就安裝完成,但是你以為這樣就算好了麼?圖樣圖森破啊。

ChromeDriver

我們還需要瀏覽器的支援來配合 selenium 的工作,開發人員嘛,常用的瀏覽器莫非那麼幾種:Chrome、Firefox,那位說 IE 的同學,你給我站起來,小心我跳起來打你膝蓋,還有說 360 瀏覽器的,你們可讓我省省心吧。

接下來,安裝 Chrome 瀏覽器就不用講了吧。。。。

再接下來,我們開始安裝 ChromeDriver ,安裝了 ChromeDriver 後,我們才能通過剛才安裝的 selenium 來驅動 Chrome 來完成各種騷操作。

首先,我們需要檢視自己的 Chrome 瀏覽器的版本,在 Chrome 瀏覽器右上角的三個點鐘,點選 幫助 -> 關於,如下圖:

將這個版本找個小本本記下來,小編這裡的版本為: 版本 78.0.3904.97(正式版本) (64 位)

接下來我們需要去 ChromeDriver 的官網檢視當前 Chrome 對應的驅動。

官網地址: https://sites.google.com/a/chromium.org/chromedriver/

因某些原因,訪問時需某些手段,訪問不了的就看小編為大家準備的版本對應表格吧。。。

ChromeDriver Version Chrome Version
78.0.3904.11 78
77.0.3865.40 77
77.0.3865.10 77
76.0.3809.126 76
76.0.3809.68 76
76.0.3809.25 76
76.0.3809.12 76
75.0.3770.90 75
75.0.3770.8 75
74.0.3729.6 74
73.0.3683.68 73
72.0.3626.69 72
2.46 71-73
2.45 70-72
2.44 69-71
2.43 69-71
2.42 68-70
2.41 67-69
2.40 66-68
2.39 66-68
2.38 65-67
2.37 64-66
2.36 63-65
2.35 62-64

順便小編找到了國內對應的下載的映象站,由淘寶提供,如下:

http://npm.taobao.org/mirrors/chromedriver

雖然和小編本地的小版本對不上,但是看樣子只要大版本符合應該沒啥問題,so,去映象站下載對應的版本即可,小編這裡下載的版本是:78.0.3904.70 ,ChromeDriver 78版本的最後一個小版本。

下載完成後,將可執行檔案 chromedriver.exe 移動至 Python 安裝目錄的 Scripts 目錄下。如果使用預設安裝未修改過安裝目錄的話目錄是:%homepath%\AppData\Local\Programs\Python\Python37\Scripts ,如果有過修改,那就自力更生吧。。。

chromedriver.exe 新增後結果如下圖:

驗證:

還是在 CMD 命令列中,輸入以下內容:

C:\Users\inwsy>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from selenium import webdriver
>>> browser = webdriver.Chrome()

如果開啟一個空白的 Chrome 頁面說明安裝成功。

GeckoDriver

上面我們通過安裝 Chrome 的驅動完成了 Selenium 與 Chrome 的對接,想要完成 Selenium 與 FireFox 的對接則需要安裝另一個驅動 GeckoDriver 。

FireFox 的安裝小編這裡就不介紹了,大家最好去官網下載安裝,路徑如下:

FireFox 官網地址: http://www.firefox.com.cn/

GeckoDriver 的下載需要去 Github (全球最大的同性交友網站),下載路徑小編已經找好了,可以選擇最新的 releases 版本進行下載。

下載地址: https://github.com/mozilla/geckodriver/releases

選擇對應自己的環境,小編這裡選擇 win-64 ,版本為 v0.26.0 進行下載。

具體配置方式和上面一樣,將可執行的 .exe 檔案放入 %homepath%\AppData\Local\Programs\Python\Python37\Scripts 目錄下即可。

驗證:

還是在 CMD 命令列中,輸入以下內容:

C:\Users\inwsy>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from selenium import webdriver
>>> browser = webdriver.Firefox()

應該是可以正常開啟一個空白的 FireFox 頁面的,結果如下:

注意: GeckoDriver 指出一點,當前的版本在 win 下使用有已知 bug ,需要安裝微軟的一個外掛才能解決,原文如下:

You must still have the Microsoft Visual Studio redistributable runtime installed on your system for the binary to run. This is a known bug which we weren't able fix for this release.

外掛下載地址: https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads

請各位同學選擇自己對應的系統版本進行下載安裝。

Aiohttp

上面我們介紹了同步的 Http 請求庫 Requests ,而 Aiohttp 則是一個提供非同步 Http 請求的類庫。

那麼,問題來了,什麼是同步請求?什麼是非同步請求呢?

  • 同步:阻塞式,簡單理解就是當發出一個請求以後,程式會一直等待這個請求響應,直到響應以後,才繼續做下一步。
  • 非同步:非阻塞式,還是上面的例子,當發出一個請求以後,程式並不會阻塞在這裡,等待請求響應,而是可以去做其他事情。

從資源消耗和效率上來說,同步請求是肯定比不過非同步請求的,這也是為什麼非同步請求會比同步請求擁有更大的吞吐量。在抓取資料時使用非同步請求,可以大大提升抓取的效率。

如果還想了解跟多有關 aiohttp 的內容,可以訪問官方文件: https://aiohttp.readthedocs.io/en/stable/ 。

aiohttp 安裝如下:

pip install aiohttp

aiohttp 還推薦我們安裝另外兩個庫,一個是字元編碼檢測庫 cchardet ,另一個是加速DNS的解析庫 aiodns 。

安裝 cchardet 庫:

pip install cchardet

安裝 aiodns 庫:

pip install aiodns

aiohttp 十分貼心的為我們準備了整合的安裝命令,無需一個一個鍵入命令,如下:

pip install aiohttp[speedups]

驗證:

C:\Users\inwsy>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import aiohttp

沒報錯就安裝成功。

解析庫

lxml

lxml 是 Python 的一個解析庫,支援 HTML 和 XML 的解析,支援 XPath 的解析方式,而且解析效率非常高。

什麼是 XPath ?

XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文件中某部分位置的語言。
XPath基於XML的樹狀結構,提供在資料結構樹中找尋節點的能力。起初XPath的提出的初衷是將其作為一個通用的、介於XPointer與XSL間的語法模型。

以上內容來源《百度百科》

好吧,小編說人話,就是可以從 XML 文件或者 HTML 文件中快速的定位到所需要的位置的路徑語言。

還沒看懂?emmmmmmmmmmm,我們可以使用 XPath 快速的取出 XML 或者 HTML 文件中想要的值。用法的話我們放到後面再聊。

安裝 lxml 庫:

pip install lxml

驗證:

C:\Users\inwsy>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import lxml

沒報錯就安裝成功。

Beautiful Soup

Beautiful Soup 同樣也是一個 Python 的 HTML 或 XML 的解析庫 。它擁有強大的解析能力,我們可以使用它更方便的從 HTML 文件中提取資料。

首先,放一下 Beautiful Soup 的官方網址,有各種問題都可以在官網檢視文件,各位同學養成一個好習慣,有問題找官方文件,雖然是英文的,使用 Chrome 自帶的翻譯功能還是勉強能看的。

官方網站:https://www.crummy.com/software/BeautifulSoup/

安裝方式依然使用 pip 進行安裝:

pip install beautifulsoup4

Beautiful Soup 的 HTML 和 XML 解析器是依賴於 lxml 庫的,所以在此之前請確保已經成功安裝好了 lxml 庫 。

驗證:

C:\Users\inwsy>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from bs4 import BeautifulSoup

沒報錯就安裝成功。

pyquery

pyquery 同樣也是一個網頁解析庫,只不過和前面兩個有區別的是它提供了類似 jQuery 的語法來解析 HTML 文件,前端有經驗的同學應該會非常喜歡這款解析庫。

首先還是放一下 pyquery 的官方文件地址。

官方文件: https://pyquery.readthedocs.io/en/latest/

安裝:

pip install pyquery

驗證:

C:\Users\inwsy>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyquery

沒報錯就安裝成功。

本篇的內容就先到這裡結束了。請各位同學在自己的電腦上將上面介紹的內容都安裝一遍,以便後續學習使用。