我正在使用Beautiful Soup抓取一个网页,输出包含非标准的拉丁字符,以十六进制显示。
我正在抓取https://www.archchinese.com,它包含拼音单词,使用非标准的拉丁字符(例如ǎ,ā)。 我一直在尝试遍历一系列包含拼音的链接,使用BeautifulSoup的.string函数和utf-8编码来输出这些单词。 在非标准字符的位置出现十六进制。 单词“好”显示为“h\xc7\x8eo”。 我确定我在编码方面做错了什么,但是我不知道应该如何修复。 我尝试先用utf-8解码,但是收到一个错误,提示元素没有解码函数。 尝试不使用编码打印字符串会给我一个关于字符未定义的错误,我想这是因为它们需要先编码成某些内容。
我正在抓取https://www.archchinese.com,它包含拼音单词,使用非标准的拉丁字符(例如ǎ,ā)。 我一直在尝试遍历一系列包含拼音的链接,使用BeautifulSoup的.string函数和utf-8编码来输出这些单词。 在非标准字符的位置出现十六进制。 单词“好”显示为“h\xc7\x8eo”。 我确定我在编码方面做错了什么,但是我不知道应该如何修复。 我尝试先用utf-8解码,但是收到一个错误,提示元素没有解码函数。 尝试不使用编码打印字符串会给我一个关于字符未定义的错误,我想这是因为它们需要先编码成某些内容。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
import re
url = "https://www.archchinese.com/"
driver = webdriver.Chrome() #Set selenium up for opening page with Chrome.
driver.implicitly_wait(30)
driver.get(url)
driver.find_element_by_id('dictSearch').send_keys('好') # This character is hǎo.
python_button = driver.find_element_by_id('dictSearchBtn')
python_button.click() # Look for submit button and click it.
soup=BeautifulSoup(driver.page_source, 'lxml')
div = soup.find(id='charDef') # Find div with the target links.
for a in div.find_all('a', attrs={'class': 'arch-pinyin-font'}):
print (a.string.encode('utf-8')) # Loop through all links with pinyin and attempt to encode.
实际结果: b'h\xc7\x8eo' b'h\xc3\xa0o'
预期结果: hǎo hào
编辑:问题似乎与Windows中的UnicodeEncodeError
有关。我尝试安装了win-unicode-console
,但没有成功。感谢snakecharmerb提供的信息。