Синтаксический анализ XML-ответа bit.ly
Вопрос
Я опробовал немного.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)
это приводит к ошибке.Что я делаю не так?
Решение
Вы не предоставляете сообщение об ошибке, поэтому я не могу быть уверен, что это единственная ошибка.Но, 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
это элемент, как вы заметили, который содержит дочерний текстовый узел, содержащий нужные вам данные.
Другие советы
from xml.dom.minidom import parseString
doc = parseString(the_page)
.
См. Документация для xml.dom.minidom
.