Получение текста с акцентированными символами с использованием Python и Selenium
Я сделал скребковый скрипт с питоном и селеном. Он собирает данные с испаноязычного сайта:
for i, line in enumerate(browser.find_elements_by_xpath(xpath)):
tds = line.find_elements_by_tag_name('td') # takes <td> tags from line
print tds[0].text # FIRST PRINT
if len(tds)%2 == 0: # takes data from lines with even quantity of cells only
data.append([u"".join(tds[0].text), u"".join(tds[1].text), ])
print data # SECOND PRINT
Первый оператор print дает мне нормальную испанскую строку. Но второй отпечаток дает мне такую строку: "Data de Distribui\u00e7\u00e3o"
, В чем причина этого?
2 ответа
Вы смешиваете кодировки:
u'' # unicode string
b'' # bytearray string
text
собственностью tds[0]
является строкой байтового массива, которая кодирует независимость, и вы работаете во втором выводе со строкой Unicode, таким образом смешивая кодировки
для использования любого типа акцентированного символа мы должны сначала закодировать или декодировать его, прежде чем использовать их
accent_char = "ôâ"
name = accent_char.decode('utf-8')
print(name)
Приведенный выше код будет работать для декодирования символов.