小白學 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
沒報錯就安裝成功。
本篇的內容就先到這裡結束了。請各位同學在自己的電腦上將上面介紹的內容都安裝一遍,以便後續學習使用。