Parsing della risposta XML di bit.ly
Domanda
Stavo provando il bit.ly API per lo shortyning e ha ottenuto il lavoro.Ritorna al mio script un documento XML.Volevo estrarre il tag ma non riesco a ansimare correttamente.
askfor = urllib2.Request(full_url)
response = urllib2.urlopen(askfor)
the_page = response.read()
.
Quindi la superficie contiene il documento XML.Ho provato:
from xml.dom.minidom import parse
doc = parse(the_page)
.
Questo provoca un errore.Cosa sto facendo male?
Soluzione
Non si fornisce un messaggio di errore in modo che non possa essere sicuro che questo è l'unico errore.Ma xml.minidom.parse
non prende una stringa.Dal docstring per parse
:
.Analizza un file in un DOM con nome file o file.
Dovresti provare:
response = urllib2.urlopen(askfor)
doc = parse(response)
.
Poiché response
si comporterà come un oggetto file.Oppure è possibile utilizzare il metodo parseString
in minidom
invece (e quindi passare the_page
come argomento).
Modifica: per estrarre l'URL, dovrai fare:
url_nodes = doc.getElementsByTagName('url')
url = url_nodes[0]
print url.childNodes[0].data
.
Il risultato di getElementsByTagName
è un elenco di tutti i nodi corrispondenti (solo uno in questo caso).url
è un elemento come notato, che contiene un nodo di testo figlio, che contiene i dati necessari.
Altri suggerimenti
from xml.dom.minidom import parseString
doc = parseString(the_page)
.
Vedere la documentazione per xml.dom.minidom
.