Pregunta

Estaba probando la API bit.ly para acortar y la hice funcionar.Devuelve a mi script un documento xml.Quería extraer la etiqueta pero parece que no puedo analizarla correctamente.

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

Entonces the_page contiene el documento xml.Lo intenté:

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

esto provoca un error.¿Qué estoy haciendo mal?

¿Fue útil?

Solución

No proporcionas un mensaje de error, por lo que no puedo estar seguro de que este sea el único error.Pero, xml.minidom.parse no lleva hilo.De la cadena de documentación para parse:

Analiza un archivo en un DOM por nombre de archivo u objeto de archivo.

Deberías intentarlo:

response = urllib2.urlopen(askfor)
doc = parse(response)

desde response se comportará como un objeto de archivo.O podrías usar el parseString método en minidom en su lugar (y luego pasar the_page como argumento).

EDITAR:Para extraer la URL, deberá hacer:

url_nodes = doc.getElementsByTagName('url')
url = url_nodes[0]
print url.childNodes[0].data

El resultado de getElementsByTagName es una lista de todos los nodos que coinciden (solo uno en este caso). url es un Elemento como habrás notado, que contiene un nodo de Texto secundario, que contiene los datos que necesitas.

Otros consejos

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

Consulte la documentación para xml.dom.minidom .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top