● pyspider簡介
pyspider 是國人binux 編寫的強大的網絡爬蟲架構,它帶有強大的WebUI 、腳本編輯器、任務監
控器、項目管理器以及結果處理器,同時支援多種資料庫後端、多種消息隊列,另外還支援JavaScript
渲染頁面的爬取,使用起來非常友善,本節介紹一下它的安裝過程。
-
相關連結
官方文檔:http: //docs.pyspider.org /
PyPI:https://pypi.python.org/pypi/pyspider
GitHub:https://github.corn/binux/pyspider
官方教程: http://docs.pyspider.org/en/latest/tutorial
線上執行個體: http:// demo.pyspider.org
-
pyspider 基本功能
我們總結了一下, PySpider 的功能有如下幾點。
1)提供友善易用的WebUI系統,可視化地編寫和調試爬蟲;
2)提供爬取進度監控、爬取結果檢視、爬蟲項目管理等功能;
3)支援多種後端資料庫,如MySQL、MongoDB、Redis、SQLite、Elasticsearch、PostgreSQL;
4)支援多種消息隊列,如RabbitMQ、Beanstalk、Redis、Kombu;
5)提供優先級控制、失敗重試、定時抓取等功能;
6)對接了PhantomJS ,可以抓取JavaScript 渲染的頁面;
7)支援單機和分布式部署,支援Docker 部署。
-
pyspider 的架構
pyspider的架構主要分為Scheduler(排程器)、Fetcher( 抓取器)、Processer(處理器)三個部分,
整個爬取過程受到Monitor(監控器)的監控,抓取的結果被Result Worker (結果處理器)處理,如圖所示。
開源爬蟲架構pyspider介紹、安裝步驟(Windows平台) Scheduler發起任務排程,Fetcher負責抓取網頁内容,Processer負責解析網頁内容,然後将新生
成的Request發給Scheduler進行排程,将生成的提取結果輸出儲存。
● pyspider安裝
-
Windows平台推薦使用pip 安裝,指令如下:
指令執行完畢即可完成安裝,目前最新版本為pyspider-0.3.10。pip install pyspider
-
這麼簡單就安裝成功了嗎?當然不是!下面介紹pyspider安裝、啟動出現的問題及解決方案:
1)pycurl安裝錯誤
直接通過
安裝,會出現如下錯誤pip install pyspider
Collecting pycurl (from pyspider)
Using cached https://files.pythonhosted.org/packages/ac/b3/0f3979633b7890bab6098d84c84467030b807a1e2b31f5d30103af5a71ca/pycurl-7.43.0.3.tar.gz
ERROR: Complete output from command python setup.py egg_info:
ERROR: Please specify --curl-dir=/path/to/built/libcurl
----------------------------------------
ERROR: Command "python setup.py egg_info" failed with error code 10 in ..\Temp\pip-install-t1_mhflp\pycurl\
這個問題的最簡單的解決辦法: 利用wheel安裝對應的pycurl
- 安裝wheel:
pip install wheel
- 下載下傳pycurl編譯安裝包:通路:http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下載下傳對應Python版本的編譯包
- 進入pycurl編譯包放置的目錄下,安裝pycurl,我的電腦是python3.7 32位:
pip install pycurl-7.43.0.3-cp37-cp37m-win32.whl
- 接下來便可以成功安裝pyspider
2)文法錯誤:SyntaxError: invalid syntax
安裝pyspider後就可以啟動試試,如果你是python3.7之前的版本,那麼恭喜你,你是不會出現這個問題的,如果你是python3.7版本,運作
pyspider all
後會錯誤提示資訊如下:
File "..\lib\site-packages\pyspider\run.py", line 231
async=True, get_object=False, no_input=False):
^
SyntaxError: invalid syntax
原因是async和await從 python3.7 開始已經加入保留關鍵字中。 參考: What’s New In Python 3.7,是以async不能作為函數的參數名。
- 修改…\lib\site-packages\pyspider路徑下的python檔案中的async為shark(全部替換,該名稱可随意定義)
① run.py
② webui\app.py
③ etcher\tornado_fetcher.py
from tornado.curl_httpclient import CurlAsyncHTTPClient
from tornado.simple_httpclient import SimpleAsyncHTTPClient
tornado_fetcher.py檔案替換async時,請注意如上兩行,若沒有區分大小寫會将其也替換,這将會導緻其他報錯!
3)ValueError: Invalid configuration
ValueError: Invalid configuration: - Deprecated option 'domaincontroller': use 'http_authenticator
- 原因是因為WsgiDAV釋出了版本 pre-release 3.x。
- 這裡提供兩個解決方案:
① 在安裝包中找到pyspider的資源包,然後找到wsgidav檔案裡面的wsgidav_app.py檔案打開,修改第96行即可。
把
"domaincontroller": "http_authenticator.domain_controller",
修改為:
"http_authenticator.domaincontroller": "http_authenticator.domain_controller",
② 降低wsgidav版本
pip install wsgidav==2.4.1
4)停頓在result_worker startin…
解決方案:
①關閉防火牆;
②關閉防毒軟體;
③重新開機電腦。
至此,pyspider已可成功運作,這裡warn可以忽略,不影響正常使用。
(spider_env) F:\Envs\spider_env>pyspider all
f:\envs\spider_env\lib\site-packages\pyspider\libs\utils.py:196: FutureWarning: timeout is not supported on your platform.
warnings.warn("timeout is not supported on your platform.", FutureWarning)
phantomjs fetcher running on port 25555
[I 190715 23:43:36 result_worker:49] result_worker starting...
[I 190715 23:43:37 processor:211] processor starting...
[I 190715 23:43:37 scheduler:647] scheduler starting...
[I 190715 23:43:37 scheduler:586] in 5m: new:0,success:0,retry:0,failed:0
[I 190715 23:43:38 scheduler:782] scheduler.xmlrpc listening on 127.0.0.1:23333
[I 190715 23:43:39 tornado_fetcher:638] fetcher starting...
[I 190715 23:43:41 app:76] webui running on 0.0.0.0:5000
最後通路localhost:5000,附上成功安裝完pyspider的界面。希望本文能幫助各位解決Windows平台上安裝pyspider的問題!