上一篇文章: Python3網絡爬蟲實戰---九、APP爬取相關庫的安裝:Appium的安裝
下一篇文章: Python3網絡爬蟲實戰---十一、爬蟲框架的安裝:ScrapySplash、ScrapyRedis
咱們直接用 Requests、Selenium 等庫寫爬蟲,若是爬取量不是太大,速度要求不高,是徹底能夠知足需求的。可是寫多了會發現其內部許多代碼和組件是能夠複用的,若是咱們把這些組件抽離出來,將各個功能模塊化,就慢慢會造成一個框架雛形,長此以往,爬蟲框架就誕生了。html
利用框架咱們能夠不用再去關心某些功能的具體實現,只須要去關心爬取邏輯便可。有了它們,能夠大大簡化代碼量,並且架構也會變得清晰,爬取效率也會高許多。因此若是對爬蟲有必定基礎,上手框架是一種好的選擇。python
本書主要介紹的爬蟲框架有PySpider和Scrapy,本節咱們來介紹一下 PySpider、Scrapy 以及它們的一些擴展庫的安裝方式。git
PySpider 是國人 binux 編寫的強大的網絡爬蟲框架,它帶有強大的 WebUI、腳本編輯器、任務監控器、項目管理器以及結果處理器,同時它支持多種數據庫後端、多種消息隊列,另外它還支持 JavaScript 渲染頁面的爬取,使用起來很是方便,本節介紹一下它的安裝過程。github
PySpider 是支持 JavaScript 渲染的,而這個過程是依賴於 PhantomJS 的,因此還須要安裝 PhantomJS,因此在安裝以前請安裝好 PhantomJS,安裝方式在前文有介紹。web
推薦使用 Pip 安裝,命令以下:數據庫
pip3 install pyspider
命令執行完畢便可完成安裝。segmentfault
Windows 下可能會出現這樣的錯誤提示:Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-vXo1W3/pycurl
這個是 PyCurl 安裝錯誤,通常會出如今 Windows 下,須要安裝 PyCurl 庫,下載連接爲:http://www.lfd.uci.edu/~gohlk...,找到對應 Python 版本而後下載相應的 Wheel 文件。
如 Windows 64 位,Python3.6 則下載 pycurl‑7.43.0‑cp36‑cp36m‑win_amd64.whl,隨後用 Pip 安裝便可,命令以下:後端
pip3 install pycurl‑7.43.0‑cp36‑cp36m‑win_amd64.whl
Linux 下若是遇到 PyCurl 的錯誤能夠參考本文:https://imlonghao.com/19.htmlxcode
Mac遇到這種狀況,執行下面操做:瀏覽器
brew install openssl openssl version 查看版本 find /usr/local -name ssl.h 能夠看到形如: usr/local/Cellar/openssl/1.0.2s/include/openssl/ssl.h 添加環境變量 export PYCURL_SSL_LIBRARY=openssl export LDFLAGS=-L/usr/local/Cellar/openssl/1.0.2s/lib export CPPFLAGS=-I/usr/local/Cellar/openssl/1.0.2s/include pip3 install pyspider
安裝完成以後,能夠直接在命令行下啓動 PySpider:
pyspider all
控制檯會有相似以下輸出,如圖 1-75 所示:
圖 1-75 控制檯
這時 PySpider 的 Web 服務就會在本地 5000 端口運行,直接在瀏覽器打開:http://localhost:5000/ 便可進入 PySpider 的 WebUI 管理頁面,如圖 1-76 所示:
圖 1-76 管理頁面
若是出現相似頁面那證實 PySpider 已經安裝成功了。
在後文會介紹 PySpider 的詳細用法。
這裏有一個深坑,PySpider在Python3.7上運行時會報錯
File "/usr/local/lib/python3.7/site-packages/pyspider/run.py", line 231 async=True, get_object=False, no_input=False): ^ SyntaxError: invalid syntax
緣由是python3.7中async已經變成了關鍵字。所以出現這個錯誤。
修改方式是手動替換一下
下面位置的async改成mark_async /usr/local/lib/python3.7/site-packages/pyspider/run.py 的231行、245行(兩個)、365行 /usr/local/lib/python3.7/site-packages/pyspider/webui/app.py 的95行 /usr/local/lib/python3.7/site-packages/pyspider/fetcher/tornado_fetcher.py 的81行、89行(兩個)、95行、117行
Scrapy 是一個十分強大的爬蟲框架,依賴的庫比較多,至少須要依賴庫有 Twisted 14.0,lxml 3.4,pyOpenSSL 0.14。而在不一樣平臺環境又各不相同,因此在安裝以前最好確保把一些基本庫安裝好。本節介紹一下 Scrapy 在不一樣平臺的安裝方法。
在 Mac 上構建 Scrapy 的依賴庫須要 C 編譯器以及開發頭文件,它通常由 Xcode 提供,運行以下命令安裝便可:
xcode-select --install
隨後利用 Pip 安裝 Scrapy 便可,運行以下命令:
pip3 install Scrapy
運行完畢以後便可完成 Scrapy 的安裝。
安裝以後,在命令行下輸入 scrapy,若是出現相似下方的結果,就證實 Scrapy 安裝成功,如圖 1-80 所示:
圖 1-80 驗證安裝
pkg_resources.VersionConflict: (six 1.5.2 (/usr/lib/python3/dist-packages), Requirement.parse('six>=1.6.0'))
six 包版本太低,six包是一個提供兼容 Python2 和 Python3 的庫,升級 six 包便可:
sudo pip3 install -U six
c/_cffi_backend.c:15:17: fatal error: ffi.h: No such file or directory
這是在 Linux 下常出現的錯誤,缺乏 Libffi 這個庫。什麼是 libffi?「FFI」 的全名是 Foreign Function Interface,一般指的是容許以一種語言編寫的代碼調用另外一種語言的代碼。而 Libffi 庫只提供了最底層的、與架構相關的、完整的」FFI」。
安裝相應的庫便可。
Ubuntu、Debian:
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev
CentOS、RedHat:
sudo yum install gcc libffi-devel python-devel openssl-devel
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build/cryptography/
這是缺乏加密的相關組件,利用Pip 安裝便可。
pip3 install cryptography
ImportError: No module named 'packaging'
缺乏 packaging 這個包,它提供了 Python 包的核心功能,利用 Pip 安裝便可。
ImportError: No module named '_cffi_backend'
缺乏 cffi 包,使用 Pip 安裝便可:
pip3 install cffi
ImportError: No module named 'pyparsing'
缺乏 pyparsing 包,使用 Pip 安裝便可:
pip3 install pyparsing appdirs
上一篇文章: Python3網絡爬蟲實戰---九、APP爬取相關庫的安裝:Appium的安裝
下一篇文章: Python3網絡爬蟲實戰---十一、爬蟲框架的安裝:ScrapySplash、ScrapyRedis