Как исправить «Строки Unicode с объявлением кодировки не поддерживаются.

ValueError: Unicode strings with encoding declaration are not supported. 
Please use bytes input or XML fragments without declaration.

Когда я пытаюсь разобрать этот сайт, не 9X_parse получается.

Когда я пытаюсь сериализовать 9X_lxml этот текст страницы, у меня возникает ошибка TypeError: Type 'str' cannot be serialized

from lxml import html

source = 'http://games.chruker.dk/eve_online/item.php?type_id=814'
path = '//*[@id="top"]/table[1]/tbody/tr[1]/td[3]/table'

page = requests.get(source)
pagetext = page.text

parser = html.fromstring(pagetext)

result = parser.xpath(path)
print(result)


Я 9X_pythonista ожидаю, что таблица требований, как на сайте: http://games.chruker.dk/eve_online/item.php?type_id=814

9
1

  • Почему вы не используете напрямую element = html.parse (source)? Метод `html.parse` поддерживает ...
2
Общее количество ответов: 2

Ответ #1

Ответ на вопрос: Как исправить «Строки Unicode с объявлением кодировки не поддерживаются.

Попробуйте это:

parser = html.fromstring(bytes(pagetext, encoding='utf8'))

9X_py

14
0

Ответ #2

Ответ на вопрос: Как исправить «Строки Unicode с объявлением кодировки не поддерживаются.

Функция parse, предоставляемая API, позволяет 9X_python напрямую передавать URL-адрес, как в переменной 9X_parser source:

from lxml import html

source = 'http://games.chruker.dk/eve_online/item.php?type_id=814'
path = '//*[@id="top"]/table[1]/tbody/tr[1]/td[3]/table'

tree = html.parse(source)

result = tree.xpath(path)

print(result) 

1
0