pyspider安装使用遇到的坑

一、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

你可能感兴趣的:(爬虫)