项目场景:
2024年重新拾起2021学过的scrapy框架,在运行测试代码时候出现如下报错:
2024-08-08 12:08:49 [scrapy.core.scraper] ERROR: Spider error processing <GET https://www.biedoul.com/wenzi/> (referer: None)
Traceback (most recent call last):
File "D:\ANACONDA\envs\webdev\Lib\site-packages\twisted\internet\defer.py", line 1075, in _runCallbacks
current.result = callback( # type: ignore[misc]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ANACONDA\envs\webdev\Lib\site-packages\scrapy\spiders\__init__.py", line 79, in _parse
return self.parse(response, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\pythonProject\SpiderProject\firstBlood\firstBlood\spiders\first.py", line 11, in parse
div_1 = response.xpath('/html/body/div[4]/div[1]/div[1]/dl')
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ANACONDA\envs\webdev\Lib\site-packages\scrapy\http\response\text.py", line 157, in xpath
return self.selector.xpath(query, **kwargs)
^^^^^^^^^^^^^
File "D:\ANACONDA\envs\webdev\Lib\site-packages\scrapy\http\response\text.py", line 145, in selector
self._cached_selector = Selector(self)
^^^^^^^^^^^^^^
File "D:\ANACONDA\envs\webdev\Lib\site-packages\scrapy\selector\unified.py", line 97, in __init__
super().__init__(text=text, type=st, **kwargs)
File "D:\ANACONDA\envs\webdev\Lib\site-packages\parsel\selector.py", line 496, in __init__
root, type = _get_root_and_type_from_text(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ANACONDA\envs\webdev\Lib\site-packages\parsel\selector.py", line 377, in _get_root_and_type_from_text
root = _get_root_from_text(text, type=type, **lxml_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ANACONDA\envs\webdev\Lib\site-packages\parsel\selector.py", line 329, in _get_root_from_text
return create_root_node(text, _ctgroup[type]["_parser"], **lxml_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ANACONDA\envs\webdev\Lib\site-packages\parsel\selector.py", line 110, in create_root_node
parser = parser_cls(recover=True, encoding=encoding, huge_tree=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\ANACONDA\envs\webdev\Lib\site-packages\lxml\html\__init__.py", line 1887, in __init__
super().__init__(**kwargs)
File "src\\lxml\\parser.pxi", line 1806, in lxml.etree.HTMLParser.__init__
File "src\\lxml\\parser.pxi", line 858, in lxml.etree._BaseParser.__init__
LookupError: unknown encoding: 'b'utf8''
重点关注 :LookupError: unknown encoding: ‘b’utf8’’
问题描述
- scrapy安装环境
我参考的是我2021年写的文章:python爬虫–scrapy框架的学习和使用(七)⭐⭐⭐—第一部分
但是这是2021年学习时根据视频安装的,心里想着计算机技术迭代更新如此之快,就没有按照文章中的安装步骤进行
- 出错的安装方法
我的环境是Anconda ,就直接使用
conda install scrapy
,conda会一起安装有关的依赖 ,结果在运行测试案例出现上述的错误
原始安装说明:
windows系统:
pip install wheel
下载twisted,下载地址为: ~~http://www.lfd.uci.edu/gohlke/pythonlibs/#twisted~ 该地址无法使用
新路径 : Index of /pypi/simple/twisted
安装twisted:pip install Twisted‑17.1.0‑cp36‑cp36m‑win_amd64.whl(加上下载路径)
也可以直接在资源里找到下载
pip install pywin32
pip install scrapy
测试:在终端里录入scrapy指令,没有报错即表示安装成功!
- 成功
2024安装说明(成功版)
- 使用conda+pip
我是conda环境,安装的scrapy
conda install scrapy
然后下载补充的 Twisted依赖:pip install Twisted‑17.1.0‑cp36‑cp36m‑win_amd64.whl
Twisted安装的说明
- 使用conda安装scrapy 只需要这一条命令即可
conda install scrapy
,wheel,pywin32,Twisted都会自动下
载 - 结果
运行测试代码,出现上述报错
- 成功安装示意图
- 成功前后虚拟环境下的包版本对比图
实际上就是teisted的包版本降低了,我猜想错误的原因是python版本和twisted版本不匹配的问题
版本 python=3.6