Programación Web y Scripting > Python

 Duda con while + urllib2 + beautifulsoup

(1/1)

hu0r:
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:


--- Código: ---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']
--- Fin del código ---

Para parsear dos (páginas) lo que hago es:


--- Código: ---        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']
--- Fin del código ---

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!!

$francisco:
no se si te comprendí bien, pero puede crear un bucle for o while en el que baya incrementando el un valor por ejemplo:


--- Código: ---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)
--- Fin del código ---

no se si es esto a lo que te refieres

Navegación

[0] Índice de Mensajes

Ir a la versión completa