A análise de XML de resposta de bits.ly
Pergunta
Eu estava tentando a pouco.ly api para shorterning e tenho que trabalhar.Ele retorna para o meu script de um documento xml.Eu queria extrair a tag, mas não consigo analisá-lo corretamente.
askfor = urllib2.Request(full_url)
response = urllib2.urlopen(askfor)
the_page = response.read()
Assim the_page contém o documento xml.Eu tentei:
from xml.dom.minidom import parse
doc = parse(the_page)
isto provoca um erro.o que estou fazendo de errado?
Solução
Você não fornecer uma mensagem de erro, então não posso ter certeza de que este é o único erro.Mas, xml.minidom.parse
não tome uma seqüência de caracteres.A partir do docstring para parse
:
Analisar um arquivo em um DOM pelo nome do arquivo ou arquivo de objeto.
Você deve tentar:
response = urllib2.urlopen(askfor)
doc = parse(response)
desde response
comportar-se como um objeto de arquivo.Ou você pode usar o parseString
método em minidom
em vez disso (e, em seguida, passar the_page
como argumento).
EDITAR:para extrair o URL, você precisará fazer:
url_nodes = doc.getElementsByTagName('url')
url = url_nodes[0]
print url.childNodes[0].data
O resultado de getElementsByTagName
é uma lista de todos os nós correspondentes (apenas um neste caso). url
é um Elemento como você notou, o qual contém uma criança nó de Texto, que contém os dados que você precisa.
Outras dicas
from xml.dom.minidom import parseString
doc = parseString(the_page)
Consulte a documentação para xml.dom.minidom
.