Разбор XML-ответа bit.ly

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

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)

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

2 ответа

Решение

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

Разобрать файл в DOM по имени файла или объекту файла.

Тебе стоит попробовать:

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

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

РЕДАКТИРОВАТЬ: чтобы извлечь URL, вам нужно сделать:

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

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

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

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

Другие вопросы по тегам