• Sábado 20 de Abril de 2024, 08:38

Autor Tema:  Duda con while + urllib2 + beautifulsoup  (Leído 2394 veces)

hu0r

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Duda con while + urllib2 + beautifulsoup
« en: Domingo 3 de Marzo de 2013, 22:09 »
0
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!!

$francisco

  • Miembro activo
  • **
  • Mensajes: 49
  • Nacionalidad: es
    • Ver Perfil
Re:Duda con while + urllib2 + beautifulsoup
« Respuesta #1 en: Lunes 25 de Marzo de 2013, 02:07 »
0
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: [Seleccionar]
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