Python3.9安装PySpider步骤及问题解决
先寫(xiě)一些前言吧,自己感覺(jué)python已經(jīng)有一定的基礎(chǔ)了,但是在安裝這個(gè)過(guò)程居然用了一下午,感覺(jué)有些收貨,特地寫(xiě)下來(lái)與大家分享一下。
PySpider是一個(gè)強(qiáng)大的網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng),GitHub地址:https://github.com/binux/pyspider;官方文檔地址:http://docs.pyspider.org/en/latest。
PySpider,提供WEBUI系統(tǒng),支持PhantomJS進(jìn)行JS的渲染采集,內(nèi)置pyquery作為選擇器,可拓展程度不高。
Scrapy,原生是代碼和命令操作,對(duì)接Portia實(shí)現(xiàn)可視化,使用parse命令調(diào)試,對(duì)接Scrapy-Splash組件進(jìn)行JS渲染采集,對(duì)接X(jué)Path/CSS選擇器和正則匹配,可對(duì)接Middleware、Pipeline、Extension等組件拓展。
PySpider,架構(gòu)分為Scheduler調(diào)度器(發(fā)起任務(wù)調(diào)度),F(xiàn)etcher抓取器(抓取網(wǎng)頁(yè)內(nèi)容),Processer處理器(解析網(wǎng)頁(yè)內(nèi)容)。
話不多說(shuō),上安裝過(guò)程(PS,本機(jī)環(huán)境windows10,Python3.9.0):
1、首先需要安裝PhantomJS,這個(gè)比較簡(jiǎn)單,就直接按照網(wǎng)上流程安裝對(duì)應(yīng)版本就行。
2、安裝PyCurl,這個(gè)是安裝PySpider的先決條件,直接pip安裝會(huì)報(bào)錯(cuò),可以下載.whl文件安裝,網(wǎng)址https://www.lfd.uci.edu/~gohlke/pythonlibs/,
3、安裝PySpider,直接pip安裝就行。
4、安裝調(diào)試:
(1)、安裝完P(guān)yspider,命令行運(yùn)行pyspider,會(huì)報(bào)錯(cuò):SyntaxError: invalid syntax:
這個(gè)是因?yàn)閜ython以及相關(guān)依賴版本過(guò)高。可以使用Pycharm (亦可直接用文檔更改代碼),點(diǎn)擊File-Open打開(kāi)pythonlibsit-packagespyspider,將文件夾pyspider 加載進(jìn)去,按Ctrl+Shift+F快捷鍵調(diào)出全局搜索,輸入async,即可在“In Project”下找到所有含有關(guān)鍵字的.py 文件,逐一打開(kāi),按Ctrl+R調(diào)出替換欄,將async 替換為shark 即可。就是分別在run.py、tornado_fetcher.py、webui>app.py,ctrl+f查找async替換掉就可以了。(注意大寫(xiě)的Async不要替換)
(2)、再次運(yùn)行發(fā)現(xiàn)報(bào)錯(cuò):AttributeError: module 'fractions' has no attribute 'gcd',
這個(gè)函數(shù)在Python3.5之后就廢棄了,官方建議使用math.gcd()。所以在libs/base_handler文件中上方加入 import math下面fractions.gcd()改為math.gcd(…)就可以了
(3)、再次運(yùn)行發(fā)現(xiàn)報(bào)錯(cuò):Deprecated option 'domaincontroller': use 'http_authenticator.domain_controller' instead.
webui文件里面的webdav.py文件打開(kāi),修改第209行即可。把
'domaincontroller': NeedAuthController(app),
修改為:
'http_authenticator':{
'HTTPAuthenticator':NeedAuthController(app),
},
(4)、再次運(yùn)行發(fā)現(xiàn)報(bào)錯(cuò):cannot import name 'DispatcherMiddleware' from 'werkzeug.wsgi' (d:python39libsite-packageswerkzeugwsgi.py)
這個(gè)是werkzeug的版本太高問(wèn)題,需要進(jìn)行修改
python -m pip uninstall werkzeug # 卸載
python -m pip install werkzeug==0.16.1
#安裝0.16.1版本
(5)、同樣也需要更換wsgidav
版本
pip uninstall wsgidav
pip install wsgidav==2.4.1
(6)、再次運(yùn)行pyspider,發(fā)現(xiàn)卡死在result_worker starting,運(yùn)行pyspider all卡死在, fetcher starting…
百度,① 有說(shuō)需要打開(kāi)一個(gè)命令行端口運(yùn)行pyspider,卡住后運(yùn)行第二個(gè)并關(guān)掉第一個(gè)端口;② 有說(shuō)需要關(guān)閉防火墻;③ 有說(shuō)需要先安裝redis
但是,我都嘗試一遍還是卡在那里。
(7)最后選擇重新安裝一遍,
① 把之前安裝的包卸載,具有有:wsgidav,werkzeug,pycurl,pyspider(已經(jīng)安裝的redis沒(méi)有卸載,防火墻中python權(quán)限打開(kāi)沒(méi)關(guān))
② 按照上述(1)~(5)步驟安裝,過(guò)程中發(fā)現(xiàn)Flask與相關(guān)包沖突,并最Flask的版本進(jìn)行了更新。具體描述如下:
a)發(fā)現(xiàn)在安裝werkzeug時(shí)報(bào)錯(cuò):
ERROR: pip's dependency resolver does not currently take
into account all the packages that are installed. This behaviour is the source
of the following dependency conflicts.
flask 2.0.1 requires Werkzeug>=2.0, but you have werkzeug
0.16.1 which is incompatible.
b)卸載flask,繼續(xù)安裝
wsgidav時(shí)報(bào)錯(cuò):
ERROR: pip's dependency resolver does not currently take
into account all the packages that are installed. This behaviour is the source
of the following dependency conflicts.
pyspider 0.3.10 requires Flask>=0.10, which is not
installed.
c)安裝flask==1.0.2,如果安裝0.10版本,發(fā)現(xiàn)pyspider的網(wǎng)頁(yè)UI部分內(nèi)容渲染失敗。1.0.2版本剛好合適
d)安裝成功截圖:
總結(jié)
以上是生活随笔為你收集整理的Python3.9安装PySpider步骤及问题解决的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux加密框架 crypto RC4
- 下一篇: java能调用python吗_如何使用运