PySpider安装遇到的坑及解决办法

本文最后更新于:2021年1月28日 中午

这段时间在学爬虫,安装pyspider框架,遇到了很多坑,像关键字问题等等,本机已经安装好pycharm(python3.9),现做测试,需要在开发机上安装pyspider,基于windows下的安装遇到一些坑,记录一下。

安装命令

  • pip3 install pyspider

  • 这个过程应该能没什么问题,pyspider是对pip有版本要求的,所以最好自动升级一下

    填坑

ok ,安装完成我们开始填坑。

  • 执行 pyspider all,立马报错:

报错信息:

1
2
3
4
5
  File "d:\python\venv\lib\site-packages\pyspider\run.py", line 231
async=True, get_object=False, no_input=False):
^
SyntaxError: invalid syntax

这是因为python3.5开始把asyncawait设为关键字了,这里作为参数名与关键字冲突了,因此找到对应的py文件,将async修改为其他名称,我修改为pyspiderasync。在以下几个文件中存在:pyspider->run.pypyspider->fetcher->tornado_fetcher.pywebui>app.py

  • 再次执行 pyspider all, 报错:

报错信息:

1
2
3
ValueError: Invalid configuration:
- Deprecated option 'domaincontroller': use 'http_authenticator.domain_controller' instead.

这个是因为wsgidav版本太高了,重新安装一下:
pip install wsgidav==2.4.1

  • 在运行,还报错:

报错信息:

1
2
ImportError: cannot import name 'DispatcherMiddleware' from 'werkzeug.wsgi' (d:\python\venv\lib\site-packages\werkzeug\wsgi.py)

这是因为werkzeug版本高了,DispatcherMiddleware这个类已经不存在了,因此重新安装小版本:

pip install werkzeug=0.16
为什么是0.16版本?我是再卸载后,暂不安装,直接执行pyspider时,错误提示信息中显示了最低版本为0.16:)

  • 再次运行 pyspider all 填坑完毕,纪念一下

其他错误

1
2
3
4
 D:\python>pyspider all
d:\python\venv\lib\site-packages\pyspider\libs\utils.py:196: FutureWarning: timeout is not supported on your platform.
warnings.warn("timeout is not supported on your platform.", FutureWarning)

忽视即可。