ImportError:使用 Scrapy 时无法导入名称 replace_entities 错误

Posted

技术标签:

【中文标题】ImportError:使用 Scrapy 时无法导入名称 replace_entities 错误【英文标题】:ImportError: cannot import name replace_entities error when using Scrapy 【发布时间】:2014-11-22 17:06:48 【问题描述】:

在过去,我会使用 scrapy 创建一个爬虫,方法是写scrapy startproject some_project

最近,我克隆了一个有蜘蛛的存储库,现在当我导航到正确的位置并输入 scrapy crawl some_spider -o output.csv -t csv 我收到导入错误:

    Traceback (most recent call last):
  File "/usr/local/bin/scrapy", line 3, in <module>
    from scrapy.cmdline import execute
  File "/usr/lib/pymodules/python2.7/scrapy/__init__.py", line 58, in <module>
    from scrapy.selector import Selector
  File "/usr/lib/pymodules/python2.7/scrapy/selector/__init__.py", line 4, in <module>
    from scrapy.selector.unified import *
  File "/usr/lib/pymodules/python2.7/scrapy/selector/unified.py", line 7, in <module>
    from scrapy.utils.misc import extract_regex
  File "/usr/lib/pymodules/python2.7/scrapy/utils/misc.py", line 8, in <module>
    from w3lib.html import replace_entities
ImportError: cannot import name replace_entities

我四处搜索并试图查看 `replace_entities' 发生了什么,但我找不到任何信息。任何有关为什么会发生这些导入错误的帮助以及有关如何解决此问题的任何想法都将不胜感激。

【问题讨论】:

我想我知道你克隆了哪个存储库 :) pip freeze 的输出显示了w3libScrapy 的哪些版本?谢谢。 哈哈,我们又见面了!我有 w3lib==1.5 和 Scrapy==0.24.4 【参考方案1】:

w3libScrapy的依赖,引用自setup.py(版本0.24.4):

install_requires=[
    'Twisted>=10.0.0',
    'w3lib>=1.8.0',
    'queuelib',
    'lxml',
    'pyOpenSSL',
    'cssselect>=0.9',
    'six>=1.5.2',
],

如您所见,Scrapy 要求 w3lib 为 1.8.0 或更高版本。

解决方案是升级w3lib 包:

pip install --upgrade w3lib 

【讨论】:

以上是关于ImportError:使用 Scrapy 时无法导入名称 replace_entities 错误的主要内容,如果未能解决你的问题,请参考以下文章

scrapy调试时出现 ImportError: No module named win32api

Scrapy 抛出 ImportError: cannot import name xmlrpc_client

Scrapy运行ImportError: No module named win32api错误

scrapy爬虫实例w3school报错ImportError: No module named w3school.items

如何停止获取 ImportError:将 django 与 wsgi 一起使用时无法导入设置“mofin.settings”?

ImportError:从 sklearn 导入 TfidfVectorizer 时无法导入名称 __check_build