天天看點

開源爬蟲架構pyspider介紹、安裝步驟(Windows平台)

● 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 安裝,指令如下:

        

    pip install pyspider

      指令執行完畢即可完成安裝,目前最新版本為pyspider-0.3.10。
  • 這麼簡單就安裝成功了嗎?當然不是!下面介紹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的問題!

開源爬蟲架構pyspider介紹、安裝步驟(Windows平台)

繼續閱讀