1. async=True, get_object=False, no_input=False):
^^^^^
SyntaxError: invalid syntax
原因是:python3.7中async是关键字
解决办法是将这个关键字替换掉。主要有两个文件:D:\installed\Python\Lib\site-packages\pyspider\run.py 和 D:\installed\Python\Lib\site-packages\pyspider\fetcher\tornado_fetcher.py
在替换是要注意:只替换名为async 的变量或参数名。随便换成别的字符串即可。
替换保存后再次运行“pyspider all”
2. class HTTPHeaders(collections.MutableMapping):
AttributeError: module 'collections' has no attribute 'MutableMapping'
原因:这个错误是因为Python 3.10中,collections模块的MutableMapping和MutableSet类被移动到了abc模块中,所以需要将collections.MutableMapping替换为collections.abc.MutableMapping
找到报错的文件的对应的行数,如File "C:\Users\shao\AppData\Roaming\Python\Python310\site-packages\tornado\httputil.py", line 106,将collections.MutableMapping替换为collections.abc.MutableMapping
3. from collections import Mapping as DictMixin
ImportError: cannot import name 'Mapping' from 'collections' (C:\Program Files\Python310\lib\collections\__init__.py)
同上,修改File "C:\Users\shao\AppData\Roaming\Python\Python310\site-packages\pyspider\libs\counter.py", line 16, 将collections替换为collections.abc
4. from collections import Mapping as DictMixin
ImportError: cannot import name 'Mapping' from 'collections' (C:\Program Files\Python310\lib\collections\__init__.py)
同上,修改File "C:\Users\shao\AppData\Roaming\Python\Python310\site-packages\pyspider\scheduler\task_queue.py", line 15, 将collections替换为collections.abc
5. 再次运行“pyspider all”
这时spider只启动到“scheduler xmlrpc listening on 127.0.0.1:23333”就停止了
继续替换...\site-packages\pyspider\webui\app.py中的async
6. AttributeError: module 'fractions' has no attribute 'gcd'
解决方案:在 pyspider\libs\base_handler 文件中上方加入 import math
文件下面将fractions.gcd()改为math.gcd()就可以了
7.AttributeError: 'QuitableFlask' object has no attribute 'before_first_request'. Did you mean: '_got_first_request'?
解决方案:pip install flask==2.2.5
8. ImportError: cannot import name 'DispatcherMiddleware' from 'werkzeug.wsgi'
解决方案:卸载原有版本 python -m pip uninstall werkzeug,卸载完毕,安装0.16.1版本 python -m pip install werkzeug==0.16.1
9. phantomjs not found, continue running without it.
解决方案:Download PhantomJS
下载phantomjs,phantomjs.exe放到python.exe同级目录下