Scraper sobre Torrelavega.es
Qué es un scraper
Antes de nada, hay que aclarar qué es un scraper. Para hacerlo entendible y fácil de leer, un scraper es tecnicismo utilizado en informática que indica, generalmente, una forma de extraer datos de un sitio web para su posterior tratamiento. Puedes leer más sobre esto en Wikipedia.
Cómo se utiliza en esta web
Una vez aclarado esto, dentro de la web del ayuntamiento existe esta sección donde se muestra un listado de las últimas 500 noticias. Gracias a esta utilidad se ha realizado un pequeño script que recorre cada elemento de la página, lo formatea y forma una página con el resultado. El siguiente trozo de código nos permite ver cómo:
// Se declara de qué pagina se va a extraer la información
const response = axios("http://www.torrelavega.es/index.php/ciudad/mas-noticias)
.then(response => {
// Se implementa una utilidad llamada cheerio que nos sirve para recorrer el contenido e la página
const html = response.data
const $ = cheerio.load(html)
// Se indica cuáles son los elementos a extraer
const items = $(".latestItemView")
const data = []
// Se recorre cada elemento individualmente
items.each(function() {
// Se extrae la fecha
const date = $(this)
.find(".latestItemDateCreated")
.text()
// Se extrae la el título e la noticia
const title = $(this)
.find(".latestItemTitle")
.text()
// Se extrae el enlace e la noticia
const link = $(this)
.find("a")
.attr("href")
// Se añade todo a una pila de elementos
data.push({
title: title.replace(/\s+/g, " "),
link,
date: new Date(replaceMonth(date.replace("00:00", "12:00"))),
})
})
return data
})
.catch(console.error)
Puedes ver el código completo aquí.
Básicamente lo que nos encontramos es un recorrido completo por la página donde seleccionamos únicamente aquello que nos interesa. En este caso la fecha, el enlace y los títulos de cada noticia. Cabe decir que es un proceso muy delicado ya que se emplean selectores CSS, como por ejemplo .latestItemDateCreated
ó .latestItemTitle
. Si estos elementos son modificados harán que la utilidad deje de funcionar y haya que refactorizarla.
Resultado
Gracias a esto, se ha creado esta página donde veremos una réplica del sitio web mencionado arriba, con menos carga visual y con la posibilidad de tratar los datos de una manera libre. Por ejemplo, se ha añadido la posibilidad de agrupar las noticias indicando cuántas se han publicado por mes, cuántas se han publicado en el día de hoy e incluso se ha añadido una gráfica para ver cuál es la línea de publicaciones mensuales.