2010-07-16 5 views
1

Я пытался попробовать bit.ly api для shorterning и получил его на работу. Он возвращает моему сценарию XML-документ. Я хотел бы извлечь тег, но, похоже, не смог его правильно разобрать.Разбор XML-ответа bit.ly

askfor = urllib2.Request(full_url) 
response = urllib2.urlopen(askfor) 
the_page = response.read() 

Таким образом, the_page содержит документ xml. Я пробовал:

from xml.dom.minidom import parse 
doc = parse(the_page) 

это вызывает ошибку. Что я делаю не так?

+3

Какая ошибка? – shookster

+0

IOError: [Errno 2] Нет такого файла или каталога parse() считает, что the_page - это файл. Как заставить его читать из varaibale the_page – Ali

ответ

2

Вы не предоставляете сообщение об ошибке, поэтому я не могу быть уверенным, что это единственная ошибка. Но, xml.minidom.parse не берет строку. Из за parse строку документации:

Parse a file into a DOM by filename or file object.

Вы должны попробовать:

response = urllib2.urlopen(askfor) 
doc = parse(response) 

так response будет вести себя как объект файла. Или вы можете использовать метод parseString в minidom (а затем передать the_page в качестве аргумента).

EDIT: для извлечения URL, вам необходимо сделать следующее:

url_nodes = doc.getElementsByTagName('url') 
url = url_nodes[0] 
print url.childNodes[0].data 

Результат getElementsByTagName список всех узлов соответствия (только один в данном случае). url - это элемент, который вы заметили, который содержит дочерний узел Text, который содержит нужные вам данные.

+0

Это синтаксический анализ the_page, но я не могу получить отдельные теги. using doc.getElementsByTagName ("url") возвращает: [] вместо данных между ними. – Ali

+0

Обновлен мой ответ, см. Выше. – ars

1
from xml.dom.minidom import parseString 
doc = parseString(the_page) 

См. Документацию для xml.dom.minidom.

+0

Это синтаксический анализ the_page, но я не могу получить отдельные теги. using doc..getElementsByTagName ("url") возвращает: [] вместо данных. – Ali

+0

Продолжить чтение документации. Этот объект, к которому вы возвращаетесь, имеет атрибуты, из которых вы получаете оба (a), чтобы получить своих детей, и (b) получить данные. –

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