文章目录

  • 前言
  • 一、安装pyspider
  • 二、开始踩坑
  • 1.使用pyspider all 报错
  • 2.尝试解决
  • 1.wsgidav3.0版本不兼容
  • 2.werkzeug版本不对
  • 3.如果还是不行,以下有三种选择方案:
  • 总结



前言

写在前面:本人是一名学生,初次接触爬虫,在安装pyspider库后遇到了一些问题,在此记录一下学习到的解决方法。
如有问题,请各位大佬们指正!

第一次写博客炒鸡激动!



一、安装pyspider

可以使用命令行 pip 安装pyspider:

pip install pyspider

卸载方法:

pip uninstall pyspider

我这里为了方便,就将库安装在了Anaconda3下。

二、开始踩坑

1.使用pyspider all 报错

报错如下:

pip sqlalchemy报错 pip install spyder报错_ide


这里报了一个 “invalid syntax”,原因是由于新版本的Python中引入了关键字async,所以在安装好pyspider库之后运行pyspider all 会出现问题。

2.尝试解决

根据报错找到了相应文件,分别是:

pip sqlalchemy报错 pip install spyder报错_tornado_02


当前文件夹的 run.py ,以及 fetcher 文件夹中的 tornado_fetcher.pywebui中的app.py 出现了问题。这里将原文件中的async改为了async_mode。

(改成别的啥也行,比如async_)



举个栗子:

1.

pip sqlalchemy报错 pip install spyder报错_ide_03


2.

pip sqlalchemy报错 pip install spyder报错_tornado_04


悄悄告诉你,用 Ctrl+f 可以快捷查找哦 ~



这里一定要注意!
在修改async时,只需要修改变量不需要修改类名或函数名中的async
(也就是,但凡async不是单独出现的都不用改)

再举个栗子:

pip sqlalchemy报错 pip install spyder报错_pip sqlalchemy报错_05

按道理,问题应该是解决了的,但是实际操作pyspider all 仍然无法执行

pip sqlalchemy报错 pip install spyder报错_pip sqlalchemy报错_06

我不管,那个23333就是在嘲笑我

这里要将webui文件夹中的webdav.py中第203行改为这样:

config = DEFAULT_CONFIG.copy()
 config.update({
    'mount_path': '/dav',
    'provider_mapping': {
        '/': ScriptProvider(app)
    },
    #'domaincontroller': NeedAuthController(app),
    'http_authenticator': {
        'HTTPAuthenticator':NeedAuthController(app),
    },
    
    'verbose': 1 if app.debug else 0,
    
    'dir_browser': {'davmount': False,
                    #'enable': True,
                    'msmount': False,
                    'response_trailer': ''},
})
dav_app = WsgiDAVApp(config)

其实就是改了两句:

#'domaincontroller': NeedAuthController(app),
    'http_authenticator': {
        'HTTPAuthenticator':NeedAuthController(app),
    },

#'enable': True,


现在使用pyspider all 就会卡在这里:

pip sqlalchemy报错 pip install spyder报错_python_07


这里可能是因为:

1.wsgidav3.0版本不兼容

解决方法:

pip uninstall wsgidav
pip install wsgidav==2.4.1
2.werkzeug版本不对

解决方法:

#卸载
python -m pip uninstall werkzeug
#安装指定版本
python -m pip install werkzeug==0.16.0
3.如果还是不行,以下有三种选择方案:
1.选择重启电脑后重新尝试
(这个主要看脸)
2.开两个命令行,先后尝试输入
(这个也挺看脸)
3.使用管理员身份打开命令行,或绕开防火墙
(比较实际的做法)

如果还是不可以,可能是中间几步出现了一些问题。建议多尝试输入几次。

pip sqlalchemy报错 pip install spyder报错_tornado_08


出现这个,代表你已经成功了,接下来在网页中输入localhost:5000即可

pip sqlalchemy报错 pip install spyder报错_命令行_09


总结

关于pyspider和jupyter notebook冲突的问题,是因为pyspider和jupyter要求的tornado版本有冲突

pyspider:tornado<=4.5.3,>=3.2
jupyter:tornado>=5.0

可以选择现用现下,也可以使用虚拟环境。

以上是我遇到的一些问题,已经成功解决。感谢大佬们的帮助,我也会继续努力的!
准备去爬了(笑)