2016-10-11 4 views
0

Это код, который приводит к сообщению об ошибке:Может кто-нибудь сказать мне, что ошибка сбщ «строка 1182 в разборе» означает, когда я пытаюсь разобрать и XML в Python

import urllib 
import xml.etree.ElementTree as ET 

url = raw_input('Enter URL:') 

urlhandle = urllib.urlopen(url) 

data = urlhandle.read() 

tree = ET.parse(data) 

Ошибка:

error msg screenshot

Я новичок в python. Я прочитал документацию и пару учебных пособий, но, очевидно, я все-таки сделал что-то не так. Я не думаю, что это сам файл xml, потому что он делает это с двумя разными файлами xml.

+0

Это называется отслеживающим. См. Https://docs.python.org/3/tutorial/errors.html для объяснения того, что это значит. – zvone

+2

Пожалуйста, разместите фактический текст этой ошибки вместо изображения. Таким образом, другие могут найти его при поиске. – usr2564301

+0

Передайте ответ не содержимому 'tree = ET.parse (urllib.urlopen (url))' –

ответ

1

Рассмотрите возможность использования ElementTree-х fromstring():

import urllib 
import xml.etree.ElementTree as ET 

url = raw_input('Enter URL:') 
# http://feeds.bbci.co.uk/news/rss.xml?edition=int 

urlhandle = urllib.urlopen(url)  
data = urlhandle.read() 

tree = ET.fromstring(data) 

print ET.tostring(tree, encoding='utf8', method='xml') 
+0

thankyou. это тоже сработало для меня. :-) – LeanneBD

+0

Отлично! Пожалуйста, примите самый полезный ответ, чтобы подтвердить разрешение. – Parfait

0

Сообщение об ошибке указывает, что ваш код пытается открыть файл, имя которого хранится в источнике переменной.

Невозможно открыть этот файл (IOError), поскольку источник переменной содержит кучу XML, а не имя файла.

+0

Спасибо Danielle. Я подумал, как я справился с получением URL-адреса, открыв его, а затем разобрав его, выглядел неуклюжим, но я не мог найти правильный способ сделать это. Есть ли синтаксис одной строки, который может принимать входные данные, а затем анализировать его как xml? – LeanneBD

+0

Вы используете источник дважды, один раз в качестве имени файла, а затем сбиваете его с помощью нового дескриптора файла. Попробуйте что-то вроде inFile = open (source, "rb") –

+1

Нет, это вводит в заблуждение. 'source' исходит из исходного кода библиотеки ElementTree, а не из кода OP. – mzjn

1

data - ссылка на содержимое XML как строка, но функция parse() ожидает имя файла или file object в качестве аргумента. Вот почему есть ошибка.

urlhandle является файловым объектом, поэтому tree = ET.parse(urlhandle) должен работать на вас.

+0

Просто примечание для всех, кто ищет это, и для mzjn, это сработало одинаково хорошо с другим вариантом, но я могу только «проверить» один ответ (как полный newb, я нахожу это странным, так как даже с минимальным опытом, который я нахожу, обычно несколько способов создания функционального кода). Во всяком случае, это сработало :-) – LeanneBD