Uso node-fetch y obtengo el cuerpo del sitio de esta manera:
import fetch from 'node-fetch'; (async () => { const response = await fetch('link'); const body = await response.text(). console.log(body); })()La consola muestra el cuerpo completo de la página completa. Pero quiero obtener un elemento específico con una determinada clase. ¿Cómo cambio el código para hacer esto?
Puedes usar cheerio.js . Es una implementación de jQuery para node.
El siguiente código selecciona un h2 y cambia su texto a Hello World .
const cheerio = require('cheerio'); const $ = cheerio.load(body); $('h2').text('Hello World!');Bueno, ya has logrado obtener una cadena que contiene todo el html de la página.
Ahora puede escribir código que extraiga la parte que desee de esa cadena. Dijiste que querías extraer un elemento que tiene una clase particular.
Como comentó moonwave99, puede usar cheerio o algún otro analizador html para extraer el elemento con el nombre de clase al que se dirige.
O, si desea evitar el uso de un paquete externo, simplemente puede escribir una expresión regular para que coincida con el elemento HTML que desea de esa cadena html:
let wholeHTML = `<html> <p>Paragraph 1</p> <p class="classIwant">Paragraph 2</p> <p>Paragraph 3</p> </html>`; let rx = /<p class="classIwant".*\/p>/gm; let matches = wholeHTML.match(rx); console.log(matches[0]);