Python - Ayuda con python, expresiones regulares y urllib

   
Vista:

Ayuda con python, expresiones regulares y urllib

Publicado por Madoko (11 intervenciones) el 01/12/2015 18:47:44
Estoy con un curso y me piden que extraiga los numeros que aparecen en un texto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import urllib
from BeautifulSoup import *
import re
 
html=urllib.urlopen("http://python-data.dr-chuck.net/comments_42.html").read()
soup=BeautifulSoup(html)
 
tags=soup("tr")
text=list()
n=list()
 
for tag in tags:
    text.append(tag)
print text
 
n= re.findall(\d+,text):
print n

Estoy intentando usar las expresiones regulares, pero no entiendo cual es el problema.
Este es el problema que me da

Traceback (most recent call last):
File "D:\COURSERA PYTHON\EJERCICIOS\prueba130.py", line 14, in <module>
for n in re.findall("\d+",text):
File "C:\Python27\lib\re.py", line 181, in findall
return _compile(pattern, flags).findall(string)
TypeError: expected string or buffer


Imagino que habrá otras formas de hacerlo, por desgracia llevo poco con python y uso lo que voy aprendiendo

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Ayuda con python, expresiones regulares y urllib

Publicado por xve (1229 intervenciones) el 01/12/2015 20:09:29
Hola Madoko, el error que nos muestras, no coincide con el código que has adjuntado...

De todas maneras, para obtener únicamente los números, creo que es un poco mas sencillo... haber si te sirve tu código un poco modificado:

1
2
3
4
5
6
7
8
import urllib
from BeautifulSoup import *
import re
 
html=urllib.urlopen("http://python-data.dr-chuck.net/comments_42.html").read()
 
n=re.findall(r"\d+",html)
print n

Coméntanos, ok?
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

Ayuda con python, expresiones regulares y urllib

Publicado por Madoko (11 intervenciones) el 01/12/2015 20:20:30
Vale, estaba mirando como modificar el post que deje, efectivamente, faltaban las " en "\d+"

el problema de hacerlo así es que coge numeros que no debería, si miras el codigo de la pagina web, aparece
<table border="2">
por ejemplo y no me interesa, solo me interesan los numeros que aparecen en
<tr><td>Leven</td><td><span class="comments">100</span></td></tr>
ya que la idea es terminar sumando los numeros de "comments"


Muchas gracias por vuestra ayuda
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

Ayuda con python, expresiones regulares y urllib

Publicado por Madoko (11 intervenciones) el 02/12/2015 00:16:56
finalmente era una tonteria, muchas gracias a todos, dejo el programa por si mas adelante por casualidad le sirve a alguien


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import urllib
from BeautifulSoup import *
import re
 
html=urllib.urlopen("http://python-data.dr-chuck.net/comments_42.html").read()
soup=BeautifulSoup(html)
 
tags=soup("tr")
text=list()
num=0
total=0
for tag in tags:
    text.append(tag)
 
 
for n in text:
    num=re.findall("\d+",str(n))
    print num
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de xve

Ayuda con python, expresiones regulares y urllib

Publicado por xve (1229 intervenciones) el 02/12/2015 07:53:56
Gracias por compartirlo Madoko!!!
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