文章目录
- 前言
- 一、安装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 报错
报错如下:
这里报了一个 “invalid syntax”,原因是由于新版本的Python中引入了关键字async,所以在安装好pyspider库之后运行pyspider all 会出现问题。
2.尝试解决
根据报错找到了相应文件,分别是:
当前文件夹的 run.py ,以及 fetcher 文件夹中的 tornado_fetcher.py,webui中的app.py 出现了问题。这里将原文件中的async改为了async_mode。
(改成别的啥也行,比如async_)
举个栗子:
1.
2.
悄悄告诉你,用 Ctrl+f 可以快捷查找哦 ~
这里一定要注意!
在修改async时,只需要修改变量而不需要修改类名或函数名中的async
(也就是,但凡async不是单独出现的都不用改)
再举个栗子:
按道理,问题应该是解决了的,但是实际操作pyspider all 仍然无法执行
我不管,那个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 就会卡在这里:
这里可能是因为:
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.使用管理员身份打开命令行,或绕开防火墙
(比较实际的做法)
如果还是不可以,可能是中间几步出现了一些问题。建议多尝试输入几次。
出现这个,代表你已经成功了,接下来在网页中输入localhost:5000即可
总结
关于pyspider和jupyter notebook冲突的问题,是因为pyspider和jupyter要求的tornado版本有冲突
pyspider:tornado<=4.5.3,>=3.2
jupyter:tornado>=5.0
可以选择现用现下,也可以使用虚拟环境。
以上是我遇到的一些问题,已经成功解决。感谢大佬们的帮助,我也会继续努力的!
准备去爬了(笑)