2015-04-04 3 views
2

Я пытаюсь разобрать XML документ (URL) с помощью запросов,синтаксического анализа XML-документ (на URL) в питоне

облицовочный следующее сообщение об ошибке:

ValueError: Unicode strings with encoding declaration are not supported 

вот мой код:

import requests 
from lxml import etree 
from lxml.etree import fromstring 

req = requests.request('GET', "http://www.nbp.pl/kursy/xml/LastC.xml") 

a = req.text 
b = etree.fromstring(a) 

Как я могу получить этот XML-анализ. Заранее благодарим за помощь

+0

Вы смотрели на этот пост? http://stackoverflow.com/questions/15830421/xml-unicode-strings-with-encoding-declaration-are-not-supported –

+0

@AlexeyGorozhanov Я попробовал ... не работает для меня! бросает ту же ошибку –

+0

@quikrr: он не может выпустить ту же ошибку, если вы действительно использовали 'req.content'; вы на 100% уверены, что используете правильный метод? –

ответ

1

Вы передаете в Unicode расшифрованную версию. Не делайте этого, синтаксические анализаторы XML требуют, чтобы вы передавали вместо них необработанные байты.

Вместо req.text используйте req.content здесь:

a = req.content 
b = etree.fromstring(a) 

Вы также можете поток XML-документ анализатору:

req = requests.get("http://www.nbp.pl/kursy/xml/LastC.xml", stream=True) 
req.raw.decode_content = True # ensure transfer encoding is honoured 
b = etree.parse(req.raw) 

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

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