pyspider 带有强大的 WebUI、脚本编辑器、任务监控器、项目管理器以及结果处理器,它支持多种数据库后端、多种消息队列、Javascript 渲染页面的爬取,使用起来很方便,但是它的启动过程很不稳定,归纳总结以下可能会出现的问题。
pyspider GitHub 地址:GitHub - binux/pyspider
官方文档地址:Introduction - pyspider
准备过程pyspider 是支持 Javascript 渲染的,这个过程依赖于 PhantomJS,所以需要安装 PhantomJS
PhantomJS 安装 :官方网站下载对应的安装包: PhantomJS - scriptable Headless Browser
下载完成后,将 PhantomJS 可执行文件所在的路径(windows:phantomjs-2.1.1-windowsbin)配置到系统环境变量中,也可以直接将 PhantomJS.exe 文件直接复制到 Python 的 script 文件夹下,在 cmd 中可验证配置是否完成:
# 以下即为配置完成 C:UsersAdministrator>PhantomJS phantomjs> # 查看版本 C:UsersAdministrator>phantomjs -v 2.1.1
pyspider 安装:
pip3 install pyspider
pyspider 启动:
# 1. pyspider all # 2. pyspider常见错误与解决 错误一: 无效语法
Python 3.5 中引入了 async,但在 Python 3.7 中成为关键字,而 pyspider 中并没有对新版本做出相应的修改,仍将 async 当作变量名,所以会报错,解决方法将变量名为 async 的进行更改替换:
找出 pyspider 文件夹下的相关文件进行修改,我的在 Anaconda 环境下(G:AnacondaLibsite-packagespyspider):
需要更改的 pyhton 脚本为:
pyspiderwebuiapp.pypyspiderrun.pypyspiderfetchertornado_fetcher.py
参考修改 tornado 中导入过相关模块的文件:
curl_httpclient.pyhttpclient.pysimple_httpclient.py
修改方法:pycharm 中 Ctrl + R 批量修改;VS Code 中导入 pyspider 文件夹 点击搜索,即可文件夹中相关关键字一次性更改:
我这里将 async 改为了 rose,可自定义更改名称,eg:async_、async_1、async_mode
错误二:无效配置wsgidav 发布的 3.0.0 版本目前仍然是测试版,相对于 2.x 更改了一些用法,pyspider 的 3.0 及以上版本在安装时,会默认安装 wsgidav 的 3.0.0 版本,需要降版本:
# 卸载 pip3 uninstall wsgidav # 安装 python -m pip install wsgidav==2.4.1错误三:PyCurl 安装错误
Command “python setup.py egg_info” failed with error code 1
这是 PyCurl 安装错误,需要安装 PyCurl 库:
安装地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pycurl,下载相应的 wheel 文件即可
# 安装命令 pip3 install pycurl‑7.44.1‑pp38‑pypy38_pp73‑win_amd64.whl
Linux 下可参考:https://imlonghao.com/19.html
错误四:导入失败这是 wsgidav 发布了版本 pre-release 3.x 导致的,所以需要降版本:
# 卸载 python -m pip uninstall werkzeug # 安装 python -m pip install werkzeug==0.16.1错误五:一直卡在 result_worker starting 解决方法一:
这也是我一直没解决的问题,翻阅了很多文章,发现问题在于 pyspider 框架并不稳定,以下博客看到的方法很有用:pyspider一直卡在result_worker starting的解决办法 ,同时开启两个终端启动 pyspider,然后关闭第一个终端,如果没用就多试几次:
解决方法二:如果觉得上述方法很麻烦,可以将以下命令写成一个 bat 脚本,新建 txt 文件写入后保存,将后缀名改成 bat 即可,这样一次性即运行三个 cmd 窗口,若没有一个成功,则重新运行:
start cmd /c pyspider all start cmd /c pyspider all start cmd /c pyspider all错误六:启动成功后,代理 WebUI 界面(localhost:5000),页面存在乱码且不能创建项目
更换浏览器打开或者多尝试几次,要么就重启 pyspider 即可成功,感觉确实不稳定:
总结以上为 pyspider 启动中常见的问题,不知 pyspider 是在 Windows 下不稳定还是怎么样,启动并不顺畅,如有了解或者指正文章问题的,欢迎评论区留言交流~
参考文章:
https://blog.csdn.net/m0_47170642/
https://blog.csdn.net/SiHann/
https://www.mshxw.com/it/313592.html
https://blog.csdn.net/weixin_39190382/
https://blog.csdn.net/qq_43342294/
https://zhuanlan.zhihu.com/p/31739955



