xml.parsers.expat.ExpatError при разборе XML - PullRequest
0 голосов
/ 21 июня 2011

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

http://www.opencellid.org/cell/get?key=xxxxxxxxxxxxx&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-код успеха. Некоторая помощь, пожалуйста!

Ответы [ 2 ]

1 голос
/ 21 июня 2011

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

content = requests.get(url = url).content
rss = parse(content).getroot()
0 голосов
/ 21 июня 2011

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

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

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

Удачи!

...