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

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

1 голос
/ 16 июля 2010

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 16 июля 2010

Вы не предоставляете сообщение об ошибке, поэтому я не уверен, что это единственная ошибка. Но 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, содержащий необходимые данные.

1 голос
/ 16 июля 2010
from xml.dom.minidom import parseString
doc = parseString(the_page)

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

...