• Sábado 20 de Abril de 2024, 04:09

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - hu0r

Páginas: [1]
1
Python / Duda con while + urllib2 + beautifulsoup
« 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:

Código: [Seleccionar]
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:

Código: [Seleccionar]
        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!!

Páginas: [1]