我最近开始熟悉 Python。我根本无法解决问题。我正在尝试使用 selenium 解析网站。下载页面并将其保存到文件中。该文件在浏览器中正常打开。我想获取标题列表。除了一个包含希腊字母 betta 之外,所有的都是正常拍摄的。当我尝试显示此标题时,我收到错误“'charmap' codec can't encode character '\u03b2' in position 13: character maps to”。看来我也设置了编码'utf-8',但它仍然不起作用。页面文件也使用“utf-8”写入
错误的全文
Traceback (most recent call last): File "D:\scrap\test1.py", line 18, in <module>
print(aaa.text)
File "C:\Users\serge\AppData\Local\Programs\Python\Python310\lib\encodings\cp1251.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u03b2' in position 13: character maps to <undefined>
with open("index.html", 'w', encoding='utf-8') as file:
file.write(driver.page_source)
,并且在浏览器中正常打开,字母“betta”的拼写为“β”
with open("index.html", 'r', encoding='utf-8') as file:
src = file.read()
soup = BeautifulSoup(src, 'lxml')
research = soup.find_all(class_="analyzes__row")
for res in research:
res1 = res.find_all('a')
for aaa in res1:
try:
print(aaa.text)
except Exception as ex:
print(ex)
continue
首先要尝试的是在控制台设置中启用 unicode 字体(通常可以选择 Lucida Console、Consolas 等)。如果没有帮助,请参阅其他要点。
如果这是一个孤立的情况(没有找到其他 Unicode 字符),那么您可以简单地
replace
将这个特定字符替换为其他字符,例如:您可以将解析结果写入 utf-8 编码的文件,然后使用支持该编码的文本编辑器查看。
您可以尝试使用参数 cp1251 编码对文本进行编码
errors="backslashreplace"
,然后使用相同的编码对其进行解码,然后将所有无法编码的 Unicode 字符转换为"\\u03b2"
:您可以不使用“backslashreplace”,而是使用“namereplace”,然后字符将被替换为其名称,对于 beta 它将是
\N{GREEK SMALL LETTER BETA}