Разбор 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
,