Я очищаю страницу с Beautiful Soup, и вывод содержит нестандартные латинские символы, которые отображаются как шестнадцатеричные.
Я очищаю https://www.archchinese.com. Он содержит слова пиньинь, которые используютнестандартные символы латинского алфавита (например, ǎ, ā).Я пытался перебрать серию ссылок, содержащих пиньинь, используя функцию Beautifulstoup .string вместе с кодировкой utf-8 для вывода этих слов.Слово выходит с шестнадцатеричным в местах нестандартных символов.Слово «hǎo» выходит как «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
РЕДАКТИРОВАТЬ: Кажется, проблема связана с UnicodeEncodeError
в Windows.Я пытался установить win-unicode-console
, но не повезло.Спасибо snakecharmerb за информацию.