Получение текста с акцентированными символами с использованием 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)

Приведенный выше код будет работать для декодирования символов.

Другие вопросы по тегам