Si un sitio web no proporciona una buena API, su próxima mejor opción es raspar su contenido. Cheerio y Express.js te ayudarán a hacer precisamente eso.

El web scraping es una técnica que permite obtener datos de un sitio web en particular. Los sitios web usan HTML para describir su contenido. Si el HTML es limpio y semántico, es fácil usarlo para localizar datos útiles.

Por lo general, utilizará un raspador web para obtener y monitorear datos y realizar un seguimiento de los cambios futuros.

Conceptos de jQuery que vale la pena conocer antes de usar Cheerio

jQuery es uno de los paquetes JavaScript más populares que existen. Facilita el trabajo con el Modelo de objeto de documento (DOM), manejar eventos, animación y más. Cheerio es un paquete para web scraping que se basa en jQuery, que comparte la misma sintaxis y API, al mismo tiempo que facilita el análisis de documentos HTML o XML.

Antes de aprender a usar Cheerio, es importante saber cómo seleccionar elementos HTML con jQuery. Afortunadamente, jQuery es compatible con la mayoría de los selectores de CSS3, lo que facilita la captura de elementos del DOM. Echa un vistazo al siguiente código:

instagram viewer

$("#container");

En el bloque de código anterior, jQuery selecciona los elementos con el identificación de "contenedor". Una implementación similar usando JavaScript antiguo regular se vería así:

document.querySelectorAll("#container");

Al comparar los dos últimos bloques de código, puede ver que el bloque de código anterior es mucho más fácil de leer que el último. Esa es la belleza de jQuery.

jQuery también tiene métodos útiles como texto(), html(), y más que hacen posible manipular elementos HTML. Hay varios métodos que puede usar para atravesar el DOM, como padre(), hermanos(), anterior(), y próximo().

El cada() El método en jQuery es muy popular en muchos proyectos de Cheerio. Le permite iterar sobre objetos y matrices. La sintaxis para el cada() el método se ve así:

$().each(<arrayorobject>, callback)

En el bloque de código anterior, llamar de vuelta se ejecuta para cada iteración de la matriz o el argumento del objeto.

Cargando HTML con Cheerio

Para comenzar a analizar datos HTML o XML con Cheerio, puede usar el cheerio.load() método. Echale un vistazo a éste ejemplo:

const $ = cheerio.load('

Hello, world!

'
);
console.log($('h1').text())

Este bloque de código usa jQuery texto() El método recupera el contenido de texto del h1 elemento. La sintaxis completa para el carga() el método se ve así:

load(content, options, mode)

El contenido El parámetro se refiere a los datos HTML o XML reales que pasa al carga() método. opciones es un objeto opcional que puede modificar el comportamiento del método. Por defecto, el carga() método introduce html, cabeza, y cuerpo elementos si faltan. Si desea detener este comportamiento, asegúrese de configurar modo a falso

Scraping Hacker News con Cheerio

El código utilizado en este proyecto está disponible en un repositorio GitHub y es gratis para su uso bajo la licencia MIT.

Es hora de combinar todo lo que ha aprendido hasta ahora y crear un web scraper simple. Hacker News es un sitio web popular para emprendedores e innovadores. También es un sitio web perfecto para aprovechar sus habilidades de raspado web porque se carga rápido, tiene una interfaz muy simple y no muestra ningún anuncio.

Asegúrate de tener Node.js y el Administrador de paquetes de nodos ejecutándose en su máquina. Cree una carpeta vacía, luego una paquete.json y agregue el siguiente JSON dentro del archivo:

{
"name": "web-scraper",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon index.js"
},
"author": "",
"license": "MIT",
"dependencies": {
"cheerio": "^1.0.0-rc.12",
"express": "^4.18.2"
},
"devDependencies": {
"nodemon": "^3.0.1"
}
}

Después de hacer eso, abre la terminal y ejecuta:

npm i

Esto debería instalar las dependencias necesarias que necesita para construir el raspador. Estos paquetes incluyen Cheerio para analizar HTML, ExpressJS para crear el servidor y, como dependencia de desarrollo,Nodemon, una utilidad que escucha los cambios en el proyecto y automáticamente reinicia el servidor.

Configurar las cosas y crear las funciones necesarias

Crear un índice.js y en ese archivo, cree una variable constante llamada "PORT". Colocar PUERTO a 5500 (o el número que elija), luego importe los paquetes Cheerio y Express respectivamente.

const PORT = 5500;
const cheerio = require("cheerio");
const express = require("express");
const app = express();

A continuación, defina tres variables: URL, html, y página terminada. Colocar URL a la URL de Hacker News.

const url = 'https://news.ycombinator.com';
let html;
let finishedPage;

Ahora crea una función llamada getHeader() que devuelve algo de HTML que el navegador debería mostrar.

functiongetHeader(){
return`

La función crear otra getScript() que devuelve algo de JavaScript para que se ejecute el navegador. Asegúrate de pasar la variable tipo como argumento cuando lo llamas.

functiongetScript(type){
return`