Я пробовал использовать 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
.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.