Cheerio é um módulo muito interessante porque é uma implementação do jQuery para Node. Vou criar um arquivo novo para ilustrar melhor. Vou salvar como cheereio.js e colocá-lo como dependência, mas para isso é preciso instalar ele primeiro:
npm install cheerio
e dentro do arquivo faremos o seguinte:
const cheerio = require('cheereio')
let $ = cheerio.load('<ul><li>1</li><li>2</li></ul>')
A partir desse momento, o Cheerio vai carregar esse HTML que coloquei dentro e permitir que eu navegue ou faça tudo que eu faria com jQuery no HTML. Por exemplo, eu posso pedir para pegar todos os li e caminhar por eles, depois escrever na tela:
$('li').each(function () {
console.log($(this).html())
})
Ao rodar, ele irá retornar o 1 e 2. Podemos alterar o HTML também, vamos supor que eu queira adicionar mais um li:
$('ul').append('<li>3</li>')
$('li').each(function () {
console.log($(this).html())
})
Com isso eu consigo manipular o HTML exatamente como se estivesse no jQuery ou no browser. Eu poderia pegar esse código, voltar para o request e, ao invés de escrever o site da UOL na tela, jogar o Body dentro. Vamos supor que eu quero saber qual o título do site:
const request = require('request')
const cheerio = require('cheerio')
request('https://www.uol.com.br', function (err, res, body) {
if (!err && res.statusCode == 200) {
let $ = cheerio.load(body)
$('title').each(function () {
console.log($(this).html())
})
}
})
// Resposta: UOL - Seu universo online
Então o request buscou o HTML, trouxe para o Cheerio, mandei ele carregar e fizemos um transversing e caminhei pelo HTML. Posso fazer ele trazer todos os p’s do site da uol:
const request = require('request')
const cheerio = require('cheerio')
request('https://www.uol.com.br', function (err, res, body) {
if (!err && res.statusCode == 200) {
let $ = cheerio.load(body)
$('p').each(function () {
console.log($(this).html())
})
}
})
O Cheerio não é um browser completo, então vai permitir que você apenas navegue pelo HTML, isso é muito legal para fazermos um crawler, por exemplo, podemos acessar um outro site como se fosse um navegador e escolher a informação que a gente quer, usando seletores do próprio jQuery.
Confira o video:
Deixe suas dúvidas e sugestões nos comentários. Curta o DevPleno no Facebook, inscreva-se no canal e cadastre seu e-mail para não perder as atualizações.
Mestre em Sistemas de Informação pela USP e criador do DevPleno. Iniciou sua carreira como professor com apenas 18 anos em um curso técnico, foram 11 anos em sala de aula formando desenvolvedores fullstack no sul de Minas Gerais.