Python - Atascado accediendo a archivo xml

 
Vista:
sin imagen de perfil

Atascado accediendo a archivo xml

Publicado por Madoko (11 intervenciones) el 08/12/2015 16:13:39
Estoy tratando de acceder a un archivo xml, pero no consigo entender cual es el problema. Si alguien puede echarme una mano lo agradecería. Estoy totalmente pez

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import urllib
import xml.etree.ElementTree as ET
 
address='http://python-data.dr-chuck/comments_42.xml'
x=urllib.urlopen(address)
data = x.read()
print 'Retrieved',len(data),'characters'
 
 
tree = ET.fromstring(data)
count=tree.findall('.//count')
for n in count:
    total.append(item.find('count').text)
print total
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Atascado accediendo a archivo xml

Publicado por xve (1646 intervenciones) el 08/12/2015 18:24:21
Hola Madoko, he probado tu código, y el error que da es que no existe la url!!!

Es ese el problema que tienes?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Atascado accediendo a archivo xml

Publicado por Madoko (11 intervenciones) el 08/12/2015 18:26:26
Acaban de informar que la dirección esta mal y hay que usar otra. Lamento las molestias. Eso si, gracias por confirmarme que no se podía acceder a los datos, llevo 12 horas atascado sin saber porque no podia acceder a los datos

Una vez puedo acceder a los datos, con la nueva dirección, lo que tengo que hacer es sumar los valores de count



import urllib
import xml.etree.ElementTree as ET


suma=0;
while True:
url = raw_input('Enter location: ')
if len(url) < 1 : break

print 'Retrieving', url
uh = urllib.urlopen(url)
data = uh.read()
print 'Retrieved',len(data),'characters'

contador=ET.fromstring(data)
lst=contador.findall('.//count')
print "Count: ",len(lst)
for item in lst:
suma.append(item)
print suma
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Atascado accediendo a archivo xml

Publicado por xve (1646 intervenciones) el 08/12/2015 18:33:01
Si la pongo en un navegador, da error 404!!!

Esta url http://python-data.dr-chuck/comments_42.xml no existe!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Atascado accediendo a archivo xml

Publicado por Madoko (11 intervenciones) el 08/12/2015 18:46:10
la direccion correcta es http://pr4e.dr-chuck.com/tsugi/mod/python-data/data/comments_42.xml
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Atascado accediendo a archivo xml

Publicado por Madoko (11 intervenciones) el 08/12/2015 19:16:57
No comprendo porque no enseña los name y count que hay en la direccion http://pr4e.dr-chuck.com/tsugi/mod/python-data/data/comments_42.xml


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import urllib
import xml.etree.ElementTree as ET
 
 
suma=0;
while True:
    url = raw_input('Enter location: ')
    if len(url) < 1 : break
 
    print 'Retrieving', url
    uh = urllib.urlopen(url)
    data = uh.read()
    print 'Retrieved',len(data),'characters'
 
    contador=ET.fromstring(data)
    lst=contador.findall('.//count')
    print "Count: ",len(lst)
    for item in lst:
        print'Name', item.find('name').text
        print'Count', item.find('count').text

Traceback (most recent call last):
File "D:\Python27\EJERCICIOS\prueba130.py", line 19, in <module>
print'Name', item.find('name').text
AttributeError: 'NoneType' object has no attribute 'text'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Atascado accediendo a archivo xml

Publicado por xve (1646 intervenciones) el 09/12/2015 07:57:41
Hola Madoko, no entiendo muy bien tu findAll(), pero creo que tu problema es que no estas en el hijo correcto...

He modificado tu código para que te funcione correctamente.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import urllib
import xml.etree.ElementTree as ET
 
url = "http://pr4e.dr-chuck.com/tsugi/mod/python-data/data/comments_42.xml"
 
print 'Retrieving', url
uh = urllib.urlopen(url)
data = uh.read()
print 'Retrieved',len(data),'characters'
 
contador=ET.fromstring(data)
#lst=contador.findall('.//count')
#print "Count: ",len(lst)
for i in contador.findall("comments"):
	for j in i.findall("comment"):
		print 'Name', j.find('name').text
		print 'Count', j.find('count').text
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Atascado accediendo a archivo xml

Publicado por Madoko (11 intervenciones) el 10/12/2015 12:52:45
Muchas gracias, efectivamente el problema es que nos decian en el curso que usaramos ('.//count') y entraba en un hijo de más, sin embargo en cuanto puse ('comments/comment') la cosa funciono como la seda

Nuevamente os quiero agradecer a todos los que entrais a leer los posts y a aquellos que con vuestros conocimientos echais una mano. Creo que teneis ganado el cielo, sobretodo con gente tan novata programando como es mi caso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Atascado accediendo a archivo xml

Publicado por xve (1646 intervenciones) el 10/12/2015 20:13:28
Gracias por comentarlo Madoko, entiendo que poniendo esto: ('comments/comment') es mas correcto que poniendo dos bucles...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar