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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top