Python报错:无法从charset_normalizer.assets导入FREQUENCIES
问题描述
我是Stack Overflow的首次发帖者,写了一段用requests和BeautifulSoup爬取网页产品重量的代码:
import requests from bs4 import BeautifulSoup request=requests.get('https://www.bever.nl/p/msr-pocket-rocket-2-brander-MECCC70060.html?colour=658') soup = BeautifulSoup(request.text, 'html.parser') product_data = soup.find_all(class_='as-a-text as-a-text--s glossary-highlight') product_weight = 0 for x in range(len(product_data)): if 'Gewicht (g)' in product_data[x]: product_weight = int(product_data[x+1].text) print(product_weight)
运行时控制台抛出错误:
During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\Joop_\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Users\Joop_\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code exec(code, run_globals) File "c:\Users\Joop_\.vscode\extensions\ms-python.python-2022.8.1\pythonFiles\lib\python\debugpy\__main__.py", line 45, in <module> cli.main() File "c:\Users\Joop_\.vscode\extensions\ms-python.python-2022.8.1\pythonFiles\lib\python\debugpy/..\debugpy\server\cli.py", line 444, in main run() File "c:\Users\Joop_\.vscode\extensions\ms-python.python-2022.8.1\pythonFiles\lib\python\debugpy/..\debugpy\server\cli.py", line 285, in run_file runpy.run_path(target_as_str, run_name=compat.force_str("__main__")) File "C:\Users\Joop_\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 289, in run_path return _run_module_code(code, init_globals, run_name, File "C:\Users\Joop_\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 96, in _run_module_code _run_code(code, mod_globals, init_globals, File "C:\Users\Joop_\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code exec(code, run_globals) File "c:\Users\Joop_\AppData\Local\Programs\Python\Python310\Projects\Bever script.py", line 1, in <module> import requests File "C:\Users\Joop_\AppData\Roaming\Python\Python310\site-packages\requests\__init__.py", line 45, in <module> from .exceptions import RequestsDependencyWarning File "C:\Users\Joop_\AppData\Roaming\Python\Python310\site-packages\requests\exceptions.py", line 9, in <module> from .compat import JSONDecodeError as CompatJSONDecodeError File "C:\Users\Joop_\AppData\Roaming\Python\Python310\site-packages\requests\compat.py", line 13, in <module> import charset_normalizer as chardet File "C:\Users\Joop_\AppData\Roaming\Python\Python310\site-packages\charset_normalizer\__init__.py", line 24, in <module> from .api import from_bytes, from_fp, from_path, normalize File "C:\Users\Joop_\AppData\Roaming\Python\Python310\site-packages\charset_normalizer\api.py", line 10, in <module> from .cd import ( File "C:\Users\Joop_\AppData\Roaming\Python\Python310\site-packages\charset_normalizer\cd.py", line 7, in <module> from .assets import FREQUENCIES ImportError: cannot import name 'FREQUENCIES' from 'charset_normalizer.assets' (unknown location)
我是Python新手,不知道问题出在哪,已经试过重新导入模块、卸载重装Python、用安装程序修复Python,但问题还是没解决。
解决方案
这个错误是charset_normalizer包损坏或安装不完整导致的,和Python本身无关,按以下步骤操作:
完全卸载并重装charset_normalizer
打开命令提示符(CMD)或终端,依次执行:pip uninstall -y charset_normalizer pip install charset_normalizer若仍未解决,清理缓存后重装
先清理pip缓存:pip cache purge再重新安装相关依赖:
pip install charset_normalizer requests检查虚拟环境(如果使用)
如果你用了虚拟环境,确保激活对应环境后再执行上述命令,避免安装到全局Python环境中。
额外的爬取代码优化建议
你的爬取逻辑可以做些小调整,避免潜在问题:
- 用
enumerate遍历更简洁,同时避免索引越界:
for idx, item in enumerate(product_data): if 'Gewicht (g)' in item.text: if idx + 1 < len(product_data): product_weight = int(product_data[idx+1].text.strip()) break
- 加入请求头模拟浏览器,降低被反爬的概率:
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } request = requests.get('https://www.bever.nl/p/msr-pocket-rocket-2-brander-MECCC70060.html?colour=658', headers=headers)
内容的提问来源于stack exchange,提问作者Joophaha
相关产品推荐
相关产品推荐

