pyspider 安装 和 快速开始
?
From:官方文檔 --- 快速開始:http://docs.pyspider.org/en/latest/Quickstart/
pyspider github 地址:https://github.com/binux/pyspider
pyspider 官方文檔:http://docs.pyspider.org/en/latest/
爬蟲框架 pyspider個人總結(詳細)熟悉:https://www.jianshu.com/p/39c7371dd6c2
?
?
python3.7+ 與 pyspider 的坑
?
python3.7+ 與 pyspider 的坑:https://zhuanlan.zhihu.com/p/115629460
?
安裝 pyspider :pip install pyspider
安裝之后先驗證是否安裝成功,在CMD下輸入
pyspider # 或者 pyspider all,但是后面執行 pyspider all 好像還卡死。。。# 兩者是一樣的,新的 pyspider框架已經整合了,所以使用 pyspider 就好執行完報錯:
Traceback (most recent call last):File "/ffk_learn/software/Python-3.7.0/ffk_py/bin/pyspider", line 7, in <module>from pyspider.run import mainFile "/ffk_learn/software/Python-3.7.0/ffk_py/lib/python3.7/site-packages/pyspider/run.py", line 231async=True, get_object=False, no_input=False):^ SyntaxError: invalid syntax因為從 python3.5 開始把 async 和 await 設為關鍵字了,這里?async 作為參數名與關鍵字沖突了。
解決方法:將相關腳本里面的 async 換一個名字即可,當然最好還是要 pyspider 的大佬更新下 pyspider 腳本。涉及的腳本文件有以下 3 個:
- 1 ffk_py/lib/python3.7/site-packages/pyspider/run.py
- 2 ffk_py/lib/python3.7/site-packages/pyspider/fetcher/tornado_fetcher.py
- 3? ? ?ffk_py/lib/python3.7/site-packages/pyspider/webui/app.py
找到對應的 py 文件,將 async 修改為其他名稱,
我這里修改為 shark (?我本機路徑:C:\Python38\Lib\site-packages\pyspider )。在以下幾個文件中存在:
pyspider ---> run.py pyspider ---> fetcher ---> tornado_fetcher.py pyspider ---> webui ---> app.py修改時注意:不要全部替換,只替換函數中的參數,和字段部分
修改完后,使用 pyspider 命令,輸入 http://localhost:5000 運行出現下面錯誤
ValueError: Invalid configuration: - Deprecated option 'domaincontroller': use 'http_authenticator原因是因為 WsgiDAV 發布了版本 pre-release 3.x。
解決方法如下:在安裝包中找到 pyspider 的資源包,然后找到 webui 文件里面的 webdav.py 文件打開,
修改第 209 行:
'domaincontroller': NeedAuthController(app),修改為:
'http_authenticator':{'HTTPAuthenticator':NeedAuthController(app), },修改后截圖:
如果不想修改源文件,第二種方法:降低版本,因為 3.0 的版本不兼容,所以替換為 2.4.1
pip uninstall wsgidav pip install wsgidav==2.4.1這里使用修改源碼的方式,修改完,保存,然后再執行 pyspider ,這時會報如下錯誤:
原因:
- 1、沒有安裝 werkzeug
- 2、werkzeug 的版本為 1.0.0,這個版本中沒有 DispatcherMiddleware 方法
解決辦法:卸載 werkzeug,重新安裝低版本的 werkzeug
# 卸載 python -m pip uninstall werkzeug# 安裝指定版本 python -m pip install werkzeug==0.16.0# 0.16 版本不行可以再試 0.15 版本 # python -m pip install werkzeug==0.15再次執行 pyspider ( 執行?pyspider all? 一直卡到?result_worker starting…?,不知道為啥。網上說如果一直卡在 result_worker starting,可以新打開一個終端(這個終端暫時不關),再次輸入pyspider,輸入完成后再關閉第一個終端),說明成功了
瀏覽器訪問 http://localhost:5000?就可以打開頁面了。
?
?
?
pyspider 介紹
?
?
?
?
快速上手
?
安裝之后先驗證是否可以正常使用
打開控制臺, cd到你要創建的項目路徑
輸入pyspider?或?pyspider all?
當看到如下信息時說明 pyspider 啟動成功
(base) D:\pyspider_test\test1>pyspider c:\users\zh\anaconda3\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.", Future Warning) [I 191030 19:27:06 result_worker:49] result_worker starting... [I 191030 19:27:06 processor:211] processor starting... [I 191030 19:27:06 tornado_fetcher:638] fetcher starting... [I 191030 19:27:06 scheduler:647] scheduler starting... [I 191030 19:27:06 scheduler:782] scheduler.xmlrpc listening on 127. 0.0.1:23333 [I 191030 19:27:06 scheduler:126] project douban_top250 updated, sta tus:TODO, paused:False, 0 tasks [I 191030 19:27:06 scheduler:586] in 5m: new:0,success:0,retry:0,fai led:0 [I 191030 19:27:07 app:76] webui running on 0.0.0.0:5000 phantomjs fetcher running on port 25555打開瀏覽器,?訪問 http://localhost:5000/,進入 pyspider 控制臺
點擊 Create ,輸入 項目名(Project Name )和 要爬取的 目標網站(Start URL(s))
你將會看到這樣一個頁面:
?
代碼區沒有自動補全功能,?你可以在 pycharm 上寫好粘過來,再進行調試,以 www.baidu.com 為例
調試好之后,回退到主頁面,將狀態改為?DEBUG?就可以運行爬取工作了
?
你可以通過把鼠標放到?progress?中的4個進度條上以查看執行狀態詳情, 當all變成純綠色, 就代表爬蟲執行完畢
點擊?Results, 可以查看你爬取到的內容
?
?
刪除項目
?
第一種方法,將目標項目的status改成STOP,然后點擊[group],輸入delete,如圖,
pyspider 會在 24H 后自動刪掉這個項目
第二種方法,到你創建項目的文件夾,刪除?data?文件夾,就會刪除當前文件夾中所有的項目
?
?
?
?
總結
以上是生活随笔為你收集整理的pyspider 安装 和 快速开始的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二维数组按行和按列遍历的效率
- 下一篇: 安卓逆向_4 --- Java 学习