Estoy tratando de obtener títulos de diferentes publicaciones de una página web usando axios y cheerio pero el script siempre arroja este error Error: cheerio.load() expects a string . ¿Cómo puedo arreglarlo?
const axios = require('axios'); const cheerio = require('cheerio'); const startLink = 'https://old.reddit.com/r/programming/'; const getPostTitles = (link) =>{ const resp = axios.get(link); const $ = cheerio.load(resp.data); const postTitles = []; $('div > p.title > a').each((_idx, el) => { const postTitle = $(el).text() postTitles.push(postTitle) }); return postTitles; }; const results = getPostTitles(startLink); console.log(results);Axios.get() devuelve una promesa, por lo que debe await o usar .then() para obtener el resultado. He usado la sintaxis async/await a continuación, esto mostrará los títulos de las publicaciones:
const axios = require('axios'); const cheerio = require('cheerio'); const startLink = 'https://old.reddit.com/r/programming/'; const getPostTitles = async (link) => { const resp = await axios.get(link); const $ = cheerio.load(resp.data); const postTitles = []; $('div > p.title > a').each((_idx, el) => { const postTitle = $(el).text() postTitles.push(postTitle) }); return postTitles; }; async function testGetPostTitles() { const results = await getPostTitles(startLink); console.log(results); } testGetPostTitles();