2024年python安装scrapy运行测试代码出现LookupError: unknown encoding: ‘b‘utf8‘‘的解决办法

项目场景:

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 scrapywheel,pywin32,Twisted都会自动下
  • 结果

运行测试代码,出现上述报错

  • 成功安装示意图
    在这里插入图片描述
  • 成功前后虚拟环境下的包版本对比图

实际上就是teisted的包版本降低了,我猜想错误的原因是python版本和twisted版本不匹配的问题

在这里插入图片描述
版本 python=3.6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胜天半月子

打不打商的无所谓,能帮到你就好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值