人生苦短,我用 Python前端
前文傳送門:python
本篇內容較長,各位同窗能夠先收藏後再看~~github
在開始講爬蟲以前,仍是先把環境搞搞好,工欲善其事必先利其器嘛~~~web
本篇文章主要介紹 Python 爬蟲所使用到的請求庫和解析庫,請求庫用來請求目標內容,解析庫用來解析請求回來的內容。redis
首先介紹小編本地的開發環境:chrome
差很少就這些,最基礎的環境,其餘環境須要咱們一個一個安裝,如今開始。npm
雖然 Python 爲咱們內置了 HTTP 請求庫 urllib ,使用姿式並非很優雅,可是不少第三方的提供的 HTTP 庫確實更加的簡潔優雅,咱們下面開始。瀏覽器
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 如今更多的是用來作自動化測試工具,相關的書籍也很多,同時,咱們也可使用它來作爬蟲工具,畢竟是自動化測試麼,利用它咱們可讓瀏覽器執行咱們想要的動做,好比點擊某個按鈕、滾動滑輪之類的操做,這對咱們模擬真實用戶操做是很是方便的。
安裝命令以下:
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複製代碼
這樣沒報錯咱們就安裝完成,可是你覺得這樣就算好了麼?圖樣圖森破啊。
咱們還須要瀏覽器的支持來配合 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 頁面說明安裝成功。
上面咱們經過安裝 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
請各位同窗選擇本身對應的系統版本進行下載安裝。
上面咱們介紹了同步的 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 是 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 一樣也是一個 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 一樣也是一個網頁解析庫,只不過和前面兩個有區別的是它提供了相似 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複製代碼
沒報錯就安裝成功。
本篇的內容就先到這裏結束了。請各位同窗在本身的電腦上將上面介紹的內容都安裝一遍,以便後續學習使用。