Analyse de la réponse XML de bit.ly
Question
J'essayais l'API bit.ly pour le raccourcissement et je l'ai fait fonctionner.Il renvoie à mon script un document XML.Je voulais extraire la balise mais je n'arrive pas à l'analyser correctement.
askfor = urllib2.Request(full_url)
response = urllib2.urlopen(askfor)
the_page = response.read()
Ainsi, the_page contient le document XML.J'ai essayé:
from xml.dom.minidom import parse
doc = parse(the_page)
cela provoque une erreur.Qu'est-ce que je fais mal?
La solution
Vous ne fournissez pas de message d'erreur, je ne peux donc pas être sûr que ce soit la seule erreur.Mais, xml.minidom.parse
ne prend pas de chaîne.De la docstring pour parse
:
Analyser un fichier dans un DOM par nom de fichier ou objet fichier.
Tu devrais essayer:
response = urllib2.urlopen(askfor)
doc = parse(response)
depuis response
se comportera comme un objet fichier.Ou vous pouvez utiliser le parseString
méthode dans minidom
à la place (puis passez the_page
comme argument).
MODIFIER:pour extraire l'URL, vous devrez faire :
url_nodes = doc.getElementsByTagName('url')
url = url_nodes[0]
print url.childNodes[0].data
Le résultat de getElementsByTagName
est une liste de tous les nœuds correspondant (un seul dans ce cas). url
est un élément, comme vous l'avez remarqué, qui contient un nœud Text enfant, qui contient les données dont vous avez besoin.
Autres conseils
from xml.dom.minidom import parseString
doc = parseString(the_page)
Voir la documentation pour xml.dom.minidom
.