【转】pyspider运行卡死在result_worker starting 的解决办法

最近在学习网络爬虫的一些知识,接触到pyspider框架,但在下载安装的过程当中遇到不少坑,记录一下。

环境:win10+anaconda3+python3.7

一、Pyspider和PhantomJS的安装

    pyspider的安装网上有很多教程,可以参照这个:戳这里

    PhantomJS下载之后需要配置环境变量,我是直接把它放在python.exe的文件夹中,因为该路径已经在环境变量中。

     

    下载完之后运行spider all查看是否成功。 

二、关闭防火墙

     在window环境下需要关闭防火墙:

     控制面板-->Windows Defender 防火墙 -->关闭防火墙

     最好确保自己的电脑还有其他的安全软件,以免引发其他安全问题。

三、将async关键字改掉

     在python3.7中async成为了关键字,而pyspider中并没有对新版本做出相应的修改,仍将async当作变量名,所以会报错。

     解决办法:把所有命名为async的变量改掉,如改为async_或者async1

     这里可以用vscode打开yourpathLibsite-packagespyspider

     然后直接在左侧搜索栏中查找,就可以直接找到包含该变量名的所有文件(注意是所有,没改全webui还是运行不了)

      

四、修改wsgidav版本

      因为wsgidav3.0的版本不兼容,所以替换为2.4.1 

  1.  
    pip uninstall wsgidav
  2.  
    pip install wsgidav==2.4.1

五、还不行的话试试重启再看报什么错    

     以上的步骤我都做了,然而发现还是卡在了result_worker starting,无奈,只能从网上找到这么多方法。

     于是我重启了电脑,用控制台再运行了一次spider all,发现这次爆出了一些新的错误:

     ImportError: cannot import name DispatcherMiddleware错误  

     把错误百度查一下,发现主要是werkzeug版本不对的问题,于是: 

  1.  
    #卸载
  2.  
    python -m pip uninstall werkzeug
  3.  
    #安装指定版本
  4.  
    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

from:https://blog.csdn.net/qq_40765537/article/details/105457499

文章乃参考、转载其他博客所得,仅供自己学习作笔记使用!!!
原文地址:https://www.cnblogs.com/xuan52rock/p/14393817.html