2016-11-06 4 views
2

Я пытаюсь разобрать страницу xml и html с помощью пакета lxml и запросов в python. Я использую следующий код для этой цели:синтаксический анализ xml и html-страницы с пакетом lxml и запросов в python

в Python:

import requests 
import lxml.etree 
url = "" 
req = requests.get(url) 
tree = html.fromstring(req.content) 
root = tree.xpath('') 
for item in root: 
    print(item.text) 

Этот код работает отлично, но для некоторых веб-страниц не может показать их содержимое правильно и необходимо установить Кодировка UTF-8, но я не Не знаю, как я могу добавить кодировку в этом коде

ответ

0

requests автоматически декодирует контент с сервера.

Важно понять:

r.content - содержит еще не декодированного содержание ответа

r.encoding - содержит информацию о реакции кодирования контента

r.text - в соответствии с official doc он уже декодированного версию r.content

стандарт Юникода, привыкает к r.text, но вы все равно можете декодировать контент вручную с помощью

r.content.decode(r.encoding) 

Надеется, что это помогает.

+0

Я пытаюсь tree = html.fromstring (req.text), но строки Unicode с объявлением кодировки не поддерживаются lxml и не работают – Snaicher

+0

работает для меня. Я пробовал как страницы ISO-8859-1, так и UTF-8. какую версию lxml вы используете? вы могли бы предоставить ссылку, где вы запрашиваете страницу? –

+0

url = "http://asretebar.com/rss/feed/?c=1&m=6" req = запросы.get (url) # req.encoding = "utf-8" # req.content.decode (req.encoding) дерева = html.fromstring (req.text) корня = tree.xpath ('канал/пункт/название') для элемента в корне: печати (item.text) – Snaicher

 Смежные вопросы

  • Нет связанных вопросов^_^