Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Xml.parsers.expat.ExpatError при разборе XML

Автор вопроса: ArunОтветов: 2

Я пытался получить информацию через HTTP-запросы, например

http://www.opencellid.org/cell/get?key=xxxxxxxxxxxx&mnc=1&mcc=228&lac=101&cellid=7283

возвращает мне ответ в формате XML, например

<rsp stat="ok">
<cell nbSamples="1" mnc="1" lac="101" lat="46.52079" lon="6.56676" cellId="7283" mcc="228" range="6000"/>
</rsp>

Я попытался использовать модули response и urllib, чтобы открыть URL-адрес, а затем проанализировать с помощью elementtree.ElementTree.

Фрагмент кода:

url = 'http://www.opencellid.org/cell/get?key=xxxxxxxxxx&mnc=1&mcc=228&lac=101&cellid=7283 '
rss = parse(requests.get(url = url)).getroot()
pprint(rss)

Однако я получаю следующую ошибку:

xml.parsers.expat.ExpatError: junk after document element: line 5, column 0

Просто распечатав ответ, вы получите HTML-код успеха. Пожалуйста, помогите!

  • Откуда берется модуль запросов (объект?)? Можете ли вы расширить фрагмент кода, чтобы также указать модули, которые вы импортируете? Ioan Alexandru Cucu 21.06.2011
  • запросы на импорт, из pprint import pprint, из elementtree.ElementTree import parse Arun 21.06.2011

pythonxmlhttpwebrequestxml-parsingelementtree

Ответы

Ответ 1 · рейтинг 1 · Ioan Alexandru Cucu

Вы забыли вызвать содержимое объекта ответа. Вот как вы получаете фактический xml.

content = requests.get(url = url).content
rss = parse(content).getroot()

Ответ 2 · rafalotufo

Первое, что я бы посоветовал, это сохранить текстовый файл только с содержимым xml:

 <rsp stat="ok">
    <cell nbSamples="1" mnc="1" lac="101" lat="46.52079" lon="6.56676" cellId="7283" mcc="228" range="6000"/>
 </rsp>

просто убедитесь, что в конце нет завершающих символов. Затем проверьте, работает ли синтаксический анализ. Если это так, то вы знаете, что это проблема со связью, а затем вам нужно выяснить, как "очистить" то, что вы получаете.

Удачи!

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы