Si conoces Python, personalmente me gusta Beautiful Soup: http://www.crummy.com/software/B…
¡Aún más por su lema!
No escribiste esa página horrible. Solo está tratando de obtener algunos datos. Beautiful Soup está aquí para ayudar.
Aparte de eso, está Scrapy: un marco de código abierto para el raspado web para Python
Puede usar cualquiera de ellos para escribir un rastreador.
- Cómo construir una API privada para mi aplicación
- Cómo crear escuchas de eventos en SharePoint 2013
- Para una aplicación web simple, ¿cuál es la mejor opción para la implementación de JPA?
- ¿Qué empresa crea sitios web creativos, efectivos y profesionales?
- ¿Cuáles son algunos frameworks, bibliotecas o herramientas "en boga" entre los desarrolladores que nacen y / o se mantienen principalmente en la Europa mediterránea?
Entonces, ¿cómo se hace para escribir un rastreador web?
En este ejemplo, trabajaremos para seleccionar los enlaces más votados en HN durante todo el día. Esto implica que tendremos que seguir raspando cada 30 minutos aproximadamente para clasificar los datos. Pero eso no es una gran preocupación aquí.
Fuente de datos:
Entonces, en este ejemplo, vamos a usar Hacker News. ¿Por qué? ¡Porque todos aman a HN! ¡Adelante, eche un vistazo a HN si aún no lo ha hecho antes! Observe una cosa importante: toda la página (o las páginas subsiguientes) tienen el mismo formato.
Planificación de su código:
Antes de comenzar esta sección, ¡asegúrese de haber instalado complementos / extensiones para desarrolladores web dependiendo de su navegador! (Es decir, no tienes lugar aquí)
Yo personalmente uso Firebug.
Una vez que haya configurado sus complementos / extensiones, estará listo para comenzar.
Para comenzar, debemos echar un vistazo al HTML que muestra estos enlaces.
En cromo:
Clic derecho del mouse -> Inspeccionar elemento.
Esto se parece a esto.
Esto abre las Herramientas de desarrollo del navegador. Ahora podremos ver el diseño de la página.
Esta parece ser el área de la región donde deseamos trabajar.
Obteniendo enlaces relevantes y votos a favor:
Ahora que sabemos que estamos mirando hacia una tabla enorme y tenemos que extraer datos relevantes de los enlaces, creamos una instancia de Beautiful Soup.
desde bs4 import BeautifulSoup
desde urllib2 import urlopen
def get_category_links (section_url):
html = urlopen (section_url) .read ()
sopa = BeautifulSoup (html, “lxml”)
resumen = []
para fila en soup.find_all (‘tr’) [2:]:
if len (row.find_all (‘td’)) == 3:
celdas = row.find_all (‘td’)
info_row = row.next_sibling
título = celdas [2] .find (‘a’). texto
url = celdas [2] .find (‘a’) [‘href’]
puntos = info_row.find (‘span’). texto si info_row.find (‘span’) más “”
data = {‘title’: título,
‘url’: url,
‘puntos’: si ‘punto’ en puntos más 0,
}
summary.append (datos)
resumen de devolución
El código es bastante fácil de seguir. Básicamente, examinamos la página web mediante el elemento de inspección y descubrimos por qué aparecieron los datos requeridos.
Por ejemplo: encontramos todos los bloques td
con longitud = 3 (esto esencialmente elimina los datos iniciales de encabezado y pie de página)
Luego encontramos spans,href
relevantes spans,href
etc. para obtener nuestros datos.
Puede dirigirse a la documentación: http://www.crummy.com/software/B…bs4/doc/ para encontrar varias formas de atravesar el DOM.
Como puede ver en el código, utilizamos Beautiful Soup para analizar esencialmente toda la página y hacer una manipulación DOM muy fácil.
Entonces, dependiendo de sus datos requeridos, manipula el DOM y analiza la página web en consecuencia.
Y eso es todo, tiene los datos que necesita. Puede manipularlo para convertirlo a cualquier forma que necesite.
Úselo juiciosamente
Sin embargo, con el poder viene una gran responsabilidad.
Tenga en cuenta los siguientes puntos antes de comenzar a raspar
- Debe verificar los términos y condiciones de un sitio antes de rasparlos. Son sus datos y es probable que tengan algunas reglas para gobernarlos.
- Sea amable: una computadora enviará solicitudes web mucho más rápido que un usuario. Asegúrese de espaciar un poco sus solicitudes para no forzar el servidor del sitio.
PD. Los sitios cambian su diseño más de lo necesario. Si eso sucede, prepárate para reescribir tu código. (¡Suspiro!)
El código completo se puede encontrar aquí: sushant-hiray / tshn
He alojado una demostración del resultado en: tshn.sushant-hiray.me. No dudes en echarle un vistazo.
Este fue mi primer proyecto de raspado.
¡Raspar es divertido e incluso más útil durante los hackatones!
Desguace feliz 🙂