一、pip install pyspider 安裝出現錯誤:
Command "python setup.py egg_info" failed with error code 10 in C:\Users\xxx\AppData\Local\Temp\pip-install-tc5uvu7l\pycurl\
經過網上大拿的經驗需要安裝wheel,執行命令pip3 install wheel安裝,提示Successfully installed wheel-0.31.1代表安裝成功,然后訪問https://www.lfd.uci.edu/~gohlke/pythonlibs/下載相關安裝文件,具體如下:
PycURL, a interface to the libcurl library.
pycurl‑7.43.1‑cp27‑cp27m‑win32.whl
pycurl‑7.43.1‑cp27‑cp27m‑win_amd64.whl
pycurl‑7.43.1‑cp34‑cp34m‑win32.whl
pycurl‑7.43.1‑cp34‑cp34m‑win_amd64.whl
pycurl‑7.43.1‑cp35‑cp35m‑win32.whl
pycurl‑7.43.1‑cp35‑cp35m‑win_amd64.whl
pycurl‑7.43.1‑cp36‑cp36m‑win32.whl
pycurl‑7.43.1‑cp36‑cp36m‑win_amd64.whl
pycurl‑7.43.1‑cp37‑cp37m‑win32.whl
pycurl‑7.43.1‑cp37‑cp37m‑win_amd64.whl
具體下載版本根據你使用的環境來定,比如我的是python3.7,然后python是32位版本,則需要選擇pycurl‑7.43.1‑cp37‑cp37m‑win32.whl進行下載,注意:32或64位版本不是電腦的版本,是安裝python的版本!!!
下載后進行安裝,命令 pip3 install D:\python\demo\pycurl-7.43.1-cp37-cp37m-win_amd64.whl執行,如果報錯:
pycurl-7.43.1-cp37-cp37m-win_amd64.whl is not a supported wheel on this platform.
代表你安裝的版本不對,就是上面所述的那個,我電腦是64位的,python是32位的,所以報錯,然后下載pycurl‑7.43.1‑cp37‑cp37m‑win32.whl后再執行命令pip3 install D:\python\demo\pycurl-7.43.1-cp37-cp37m-win32.whl安裝即可,提示Successfully installed pycurl-7.43.1及安裝成功!
費了很大事,最后再安裝pyspider就OK了,執行命令pip3 install pyspider提示
Successfully installed Flask-1.0.2 Flask-Login-0.4.1 Jinja2-2.10 MarkupSafe-1.0 PyYAML-3.13 Werkzeug-0.14.1 click-6.7 cssselect-1.0.3 defusedxml-0.5.0 itsdangerous-0.24 jsmin-2.2.2 lxml-4.2.5 pyquery-1.4.0 pyspider-0.3.10 tblib-1.3.2 tornado-4.5.3 u-msgpack-python-2.5.0 wsgidav-2.4.1
二、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行
三、
ValueError: Invalid configuration:
- Deprecated option 'domaincontroller': use 'http_authenticator.domain_controller' instead.
3.1 最后定位在了wsgidav3.x問題,pyspider會默認安裝wsgidav3.x,解決辦法為先把3.x卸載,再裝2.x(pip install wsgidav會默認安裝2.x我安裝的是2.4.1
pip uninstall wsgidav
pip install wsgidav
如果安裝的wsgidav本還是3.x,可以在卸載這個版本之后,在安裝命令后面加上具體版本號
python -m pip install wsgidav==2.4.1, 此方法未解決問題
3.2 原因是因為WsgiDAV發布了版本 pre-release 3.x。
解決方法如下:
在安裝包中找到pyspider的資源包,然后找到webui文件里面的webdav.py文件打開,修改第209行即可。
把 'domaincontroller': NeedAuthController(app),
修改為:
'http_authenticator':{
'HTTPAuthenticator':NeedAuthController(app),
},
首次執行pyspider all可能會卡在result_worker starting ...這里,需要用Ctrl + C 中斷后重新打開CMD 輸入pyspider all就成功了。
四、在實際的調試中發現pyspider的Web預覽界面只有一點非常小
原因:web預覽框過小的原因在於頁面元素的css屬性height被替換為60px
所以我們需要更改CSS文件的內容,但是這個應該不是所有瀏覽器都通用,只是測試了Chrome瀏覽器是可以的
修改debug.min.css文件內容如下: https://www.jianshu.com/p/7bff6fd4dc1b
參考內容:
1. https://segmentfault.com/a/1190000019487737?utm_source=tag-newest
2. https://www.cnblogs.com/kerbside/p/9630388.html#commentform
3. https://blog.csdn.net/qq_37253540/article/details/88196994