最近在学习网络爬虫的一些知识,接触到pyspider框架,但在下载安装的过程当中遇到不少坑,记录一下。
环境:win10+anaconda3+python3.7
pyspider的安装网上有很多教程,可以参照这个:戳这里。
PhantomJS下载之后需要配置环境变量,我是直接把它放在python.exe的文件夹中,因为该路径已经在环境变量中。
下载完之后运行spider all查看是否成功。
在window环境下需要关闭防火墙:
控制面板-->Windows Defender 防火墙 -->关闭防火墙
最好确保自己的电脑还有其他的安全软件,以免引发其他安全问题。
在python3.7中async成为了关键字,而pyspider中并没有对新版本做出相应的修改,仍将async当作变量名,所以会报错。
解决办法:把所有命名为async的变量改掉,如改为async_或者async1
这里可以用vscode打开yourpath\Lib\site-packages\pyspider
然后直接在左侧搜索栏中查找,就可以直接找到包含该变量名的所有文件(注意是所有,没改全webui还是运行不了)
因为wsgidav3.0的版本不兼容,所以替换为2.4.1
pip uninstall wsgidav
pip install wsgidav==2.4.1
以上的步骤我都做了,然而发现还是卡在了result_worker starting,无奈,只能从网上找到这么多方法。
于是我重启了电脑,用控制台再运行了一次spider all,发现这次爆出了一些新的错误:
ImportError: cannot import name DispatcherMiddleware错误
把错误百度查一下,发现主要是werkzeug版本不对的问题,于是:
#卸载
python -m pip uninstall werkzeug
#安装指定版本
python -m pip install werkzeug==0.16.0
经过上面五个步骤就成功运行啦,访问http://localhost:5000/可以成功打开pyspider dashboard
pyspider不能成功运行主要是防火墙,关键字冲突,版本不对应的问题,而且哪些包的版本不对应每台机器可能不一样,所以可以重启试试,再运行看哪些包版本还有问题。
如果这篇文章对你有用的话,可以点个赞再走哦!
参考资料:
【1】https://blog.csdn.net/ShiMengRan107/article/details/104395751/
【2】https://blog.csdn.net/weixin_39190382/article/details/104923254
【3】https://segmentfault.com/q/1010000015188569/a-1020000015213575