Foros del Web » Programando para Internet » Python »

[Ayuda]Webcrawler casi terminado

Estas en el tema de [Ayuda]Webcrawler casi terminado en el foro de Python en Foros del Web. Hola!, ya tengo mi webcrawler practicamente terminado, lo único que me falta es conectarlo a una base de datos para probar como funciona. El problema ...
  #1 (permalink)  
Antiguo 27/06/2012, 11:02
 
Fecha de Ingreso: junio-2010
Mensajes: 49
Antigüedad: 14 años, 5 meses
Puntos: 3
Información [Ayuda]Webcrawler casi terminado

Hola!, ya tengo mi webcrawler practicamente terminado, lo único que me falta es conectarlo a una base de datos para probar como funciona. El problema es que no se como lograrlo.

El código se los regalo para todos los que quieran desarrollarlo un poco más, si alguien puede ayudarme a conectarlo con una DB se lo agradezco mucho.

El webcrawler tiene la siguiente función: busca en el código de la página un enlace, luego sigue los enlaces que contiene esa página y se le asigna a cada página una keyword. Así si uno busca "sandía" le aparecerán todas las páginas que tengan asignada la keyword "sandía".

Código Python:
Ver original
  1. def get_next_target(page):
  2.     start_link = page.find('<a href=')
  3.     if start_link == -1:
  4.         return None, 0
  5.     start_quote = page.find('"', start_link)
  6.     end_quote = page.find('"', start_quote + 1)
  7.     url = page[start_quote + 1:end_quote]
  8.     return url, end_quote
  9.  
  10. def get_all_links(page):
  11.     links = []
  12.     while True:
  13.         url, endpos = get_next_target(page)
  14.         if url:
  15.             links.append(url)
  16.             page = page[endpos:]
  17.         else:
  18.             break
  19.         return links
  20.  
  21. def add_to_index(index, keyword, url):
  22.     for entry in index:
  23.         if entry[0] == keyword:
  24.             entry[1].append(url)
  25.             return
  26.         index.append([keyword, [url]])
  27.  
  28. def lookup(index, keyword):
  29.     for entry in index:
  30.         if entry[0] == keyword:
  31.             return entry[1]
  32.         return[]
  33.  
  34.     def crawl_web(seed)
  35.     tocrawl = [seed]
  36.     crawled = []
  37.     index = []
  38.     while tocrawl:
  39.         page = tocrawl.pop()
  40.         if page not in crawled:
  41.             content = get_page(page)
  42.             [add_page_to_index(index,page,content)]
  43.             union (tocrawl, get_all_links(content))
  44.             crawled.append(page)
  45.             return index

Muchas gracias!

PD: está en inglés porque el tutorial online que seguí para crearlo era en inglés =P
__________________
Naica enciclopedia animal
  #2 (permalink)  
Antiguo 27/06/2012, 11:12
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: [Ayuda]Webcrawler casi terminado

Un web crawler lo puedes dividir en 2 partes:

La parte de crawling y la parte de scraping. La parte de crawling consiste en seguir links mientras que el scrapping consiste en obtener datos de las paginas crawleadas.

Por cierto hay herramientas ya hechas para hacer el crawling, por ejemplo scrapy.

Otra cosa, a que base de datos lo quieres conectar? puedes usar sqlite3 para pruebas.
  #3 (permalink)  
Antiguo 27/06/2012, 12:31
 
Fecha de Ingreso: junio-2010
Mensajes: 49
Antigüedad: 14 años, 5 meses
Puntos: 3
Respuesta: [Ayuda]Webcrawler casi terminado

Quería intentar subirlo a una base de datos con phpMyAdmin.

Si utilizo scrapy para el crawling, ¿tendría que crear un webcrawler que se encarge del scraping editando los registros añadidos por 'scrapy' a la base de datos, para sumar el titulo, keywords, descripción y lo que se encuentre?
__________________
Naica enciclopedia animal
  #4 (permalink)  
Antiguo 27/06/2012, 13:29
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: [Ayuda]Webcrawler casi terminado

Cita:
Iniciado por Naica Ver Mensaje
Quería intentar subirlo a una base de datos con phpMyAdmin.

Si utilizo scrapy para el crawling, ¿tendría que crear un webcrawler que se encarge del scraping editando los registros añadidos por 'scrapy' a la base de datos, para sumar el titulo, keywords, descripción y lo que se encuentre?
Si, lo único que tendrías que hacer es darle la(s) url(s) donde comienza.

Modelar la base de datos en este caso sería un solo modelo.

Y finalmente indicarle como va a sacar los con xpath.
  #5 (permalink)  
Antiguo 28/06/2012, 07:27
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [Ayuda]Webcrawler casi terminado

Esto es parte de http://www.udacity.com/overview/Course/cs101, ¿no?

conectarlo a una BBDD es una buena forma de expandirlo :) Primero que nada deberías crear tu modelo de datos (qué datos guardar y cómo distribuirlos en la BBDD). Luego, la forma más sencilla de trabajar con una BBDD es utilizar un ORM, en Python el más completo es SQLAlchemy.
Tendrás que elegir qué BBDD usar, python incluye SQLite pero MySQL o PostgreSQL son fáciles de conectar también.


Saludos.

Etiquetas: robot+de+busqueda, spider, webcrawler
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:16.