Вопрос

Я опробовал немного.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 .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top