SoloCodigo
Programación Web y Scripting => Python => Mensaje iniciado por: hu0r en Domingo 3 de Marzo de 2013, 22:09
-
Hola, soy nuevo en el foro y vengo a aprender y por qué no, ayudar a otros.
Resulta que estoy parseando una web con la librería Beautiful Soup, pero no quiero que revise sólo una url, sino varias. Pero tampoco quiero añadir una lista de urls y que las revise, sino que haga un tipo de loop y revise varias páginas.
En resumen, tengo una página del estilo: http://sitio.com/?cat=200&page=1 (que sería la primera página), pero quiero parsear también las siguientes páginas (2,3,...,X). Entonces, no quiero agregar una lista de:
http://sitio.com/?cat=200&page=1
http://sitio.com/?cat=200&page=2
http://sitio.com/?cat=200&page=3
...
ETC
Sino que hacer un loop (while) y que vaya variando el id de la página.
El código que utilizo para parsear una sola página es:
import urllib2
from BeautifulSoup import BeautifulSoup
url = 'http://sitio.com/?cat=200&paged=1'
data = urllib2.urlopen(url).read()
soup = BeautifulSoup(data)
xa = soup.findAll('a', href=True)
for web in xa:
print web['href']
Para parsear dos (páginas) lo que hago es:
url = 'http://sitio.com/?cat=200&paged=1'
data = urllib2.urlopen(url).read()
soup = BeautifulSoup(data)
xa = soup.findAll('a', href=True)
url = 'http://sitio.com/?cat=200&paged=2'
data = urllib2.urlopen(url).read()
soup = BeautifulSoup(data)
xb = soup.findAll('a', href=True)
for web in xa:
print web['href']
for web in xb:
print web['href']
Pero la idea no es ir agregando tanta página manualmente. Sino que automáticamente avance por las páginas y al terminar, diga algo así como finalizado. Se agradece una ayuda!!
-
no se si te comprendí bien, pero puede crear un bucle for o while en el que baya incrementando el un valor por ejemplo:
for n in range(1,3):
url = 'http://sitio.com/?cat=200&paged=%s' %n
data = urllib2.urlopen(url).read()
soup = BeautifulSoup(data)
xa = soup.findAll('a', href=True)
no se si es esto a lo que te refieres