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

人生苦短,我用 Python前端

前文傳送門:python

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

本篇內容較長,各位同窗能夠先收藏後再看~~github

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

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

開發環境

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

  • Python3.7.4
  • win10

差很少就這些,最基礎的環境,其餘環境須要咱們一個一個安裝,如今開始。npm

請求庫

雖然 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%AppDataLocalProgramsPythonPython37Scripts ,若是有過修改,那就自力更生吧。。。

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%AppDataLocalProgramsPythonPython37Scripts 目錄下便可。

驗證:

仍是在 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複製代碼

沒報錯就安裝成功。

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

若是個人文章對您有幫助,請掃碼關注下做者的公衆號:獲取最新干貨推送:)
相關文章
相關標籤/搜索