O que é o Cheerio?
O Cheerio é uma biblioteca JavaScript que analisa e manipula documentos HTML e permite selecionar, modificar e realizar ações em elementos dentro de um documento utilizando uma sintaxe semelhante à do jQuery.
O Cheerio é leve e fácil de usar, tornando-o uma boa escolha para tarefas simples de web scraping. É também mais rápido do que utilizar um navegador completo como o Chrome ou o Firefox, uma vez que não tem de carregar todos os recursos e ativos. Isto torna-o ideal para extrair dados de um documento HTML.
O Cheerio possui muitas funcionalidades e vantagens que o tornam uma escolha popular para web scraping. Algumas das principais funcionalidades e vantagens do Cheerio incluem:
- Leve e fácil de usar: O Cheerio foi concebido para ser leve e fácil de usar, tornando-o uma excelente escolha para tarefas simples de web scraping. A sua sintaxe é semelhante à do jQuery, que é familiar a muitos programadores, e permite selecionar e manipular elementos num documento HTML com apenas algumas linhas de código.
- Rápido: O Cheerio é mais rápido do que utilizar um navegador completo para web scraping, uma vez que não precisa de carregar todos os recursos e elementos que um navegador carregaria. Isto torna-o uma boa escolha para tarefas em que a velocidade é importante.
- Suporte para documentos HTML e XML: O Cheerio consegue analisar e manipular documentos HTML e XML, dando-lhe a flexibilidade de trabalhar com diferentes tipos de documentos, conforme necessário.
- Pode ser utilizado em combinação com outras ferramentas: O Cheerio pode ser utilizado em combinação com outras ferramentas, como a API Fetch ou o Axios, para realizar tarefas de web scraping. Isto permite-lhe adaptar o seu fluxo de trabalho às suas necessidades específicas e utilizar as melhores ferramentas para o trabalho.
O que é o Puppeteer?
O Puppeteer é uma biblioteca Node.js que fornece uma API de alto nível para controlar um navegador Chrome sem interface gráfica. Permite-lhe automatizar tarefas no Chrome sem ter de abrir uma janela do Chrome, o que reduz o número de recursos que o seu scraper irá consumir.
Pode utilizar o Puppeteer para realizar ações como preencher formulários, clicar em botões e extrair dados de sites.
Uma das principais vantagens do Puppeteer é que permite interagir com sites de uma forma semelhante à de um utilizador humano. Isto torna-o uma boa escolha para tarefas que requerem interações mais complexas com um site, tais como iniciar sessão, navegar pelas páginas e preencher formulários.
O Puppeteer possui várias funcionalidades e vantagens que o tornam uma escolha popular para web scraping e automação. Algumas das principais funcionalidades e vantagens do Puppeteer incluem:
- API de alto nível: O Puppeteer fornece uma API de alto nível que é fácil de usar e compreender. Isto torna-o uma boa escolha para programadores que são novos na extração de dados da Web ou na automação.
- Controlo sobre um navegador Chrome headless: O Puppeteer permite-lhe controlar um navegador Chrome headless, o que significa que pode automatizar tarefas no Chrome sem ter de abrir uma janela do Chrome. Isto torna-o uma boa escolha para tarefas que requerem interações mais complexas com um site.
- Imita o comportamento humano: O Puppeteer consegue imitar o comportamento humano, como clicar em botões, percorrer páginas e preencher formulários. Isto torna-o uma boa escolha para tarefas que requerem interações mais complexas com um site.
- Suporte para funcionalidades web modernas: O Puppeteer oferece suporte total para funcionalidades web modernas, como JavaScript, cookies e CAPTCHAs. Isto torna-o uma boa escolha para tarefas que requerem estas funcionalidades.
- Pode ser utilizado em combinação com outras ferramentas: O Puppeteer pode ser utilizado em combinação com outras ferramentas, como o Cheerio, para realizar tarefas de web scraping. Isto permite-lhe adaptar o seu fluxo de trabalho às suas necessidades específicas e utilizar as melhores ferramentas para o trabalho.
Diferenças entre o Cheerio e o Puppeteer
O Cheerio e o Puppeteer são ambos ferramentas populares para web scraping, mas apresentam algumas diferenças fundamentais que os tornam mais adequados para determinadas tarefas. Aqui estão algumas das principais diferenças entre o Cheerio e o Puppeteer:
- Desempenho: O Cheerio é geralmente mais rápido do que o Puppeteer porque não precisa de carregar todos os recursos e ativos que um navegador carregaria. No entanto, o Puppeteer tem a vantagem de poder interagir com sites de uma forma semelhante à de um utilizador humano, o que pode torná-lo mais rápido para determinadas tarefas.
- Funcionalidade: O Cheerio é adequado para tarefas simples de web scraping que envolvem a extração de dados de documentos HTML ou XML. O Puppeteer é mais poderoso e pode automatizar tarefas num navegador Chrome headless, tais como iniciar sessão, navegar por páginas e preencher formulários.
- Facilidade de utilização: O Cheerio tem uma sintaxe semelhante à do jQuery, que é familiar a muitos programadores. Isto torna-o fácil de utilizar para quem já está familiarizado com o jQuery. O Puppeteer também possui uma API de alto nível que é fácil de utilizar, mas requer mais instalação e configuração do que o Cheerio.
Em geral, a escolha entre o Cheerio e o Puppeteer dependerá das necessidades específicas da sua tarefa de web scraping. Se apenas precisa de extrair alguns dados de um documento HTML e o desempenho é uma preocupação, o Cheerio pode ser a melhor escolha. Se precisa de automatizar, o Puppeteer é a escolha certa.
Verificar ou instalar o Node.JS
Antes de começarmos, certifique-se de que o Node.JS está instalado no seu computador. A versão do Node utilizada neste artigo é a 18.9.0. Execute este comando para verificar a sua versão local:
node -v
Se receber um erro, descarregue e instale o Node.js a partir do site oficial. Isto também instalará o `npm`, o gestor de pacotes para o Node.js.
Configurar o projeto
Abra o terminal e crie uma nova pasta chamada `scraper`. Aceda ao diretório e execute o comando npm init. Isto irá criar um ficheiro `package.json` para o seu projeto, contendo metadados como o nome, a versão e as dependências.
Siga as instruções para introduzir informações sobre o seu projeto. Pode premir `Enter` para aceitar os valores predefinidos para cada solicitação, ou pode introduzir os seus próprios valores conforme desejar.
Pode agora começar a instalar dependências e a criar ficheiros para o seu projeto:
npm install cheerio puppeteer
As dependências serão instaladas no diretório `node_modules` do seu projeto e também serão adicionadas à secção de dependências do seu ficheiro `package.json`.
Definir um alvo
Para este artigo, iremos extrair um artigo da ArsTechnica e extrair o título do artigo, o URL da imagem de capa e o primeiro parágrafo do corpo do artigo.
Curso intensivo básico sobre extração de dados
Para começar, aceda ao site de destino e abra um artigo. Clique com o botão direito do rato no título do artigo e selecione «Inspecionar». Isto irá abrir as Ferramentas de Programador e destacar o elemento HTML da tag de título.
Para boas práticas de SEO, uma página deve ter apenas um elemento H1. Portanto, h1 pode ser usado como um seletor fiável para o título.
Para escolher o seletor da imagem de capa, use a ferramenta Inspecionar. A imagem está envolvida numa tag `figure`, por isso é uma boa ideia incluir o elemento pai no seletor. O seletor final é `figure img`.
Por último, mas não menos importante, precisamos de encontrar o seletor para o primeiro parágrafo.
Uma vez que o primeiro parágrafo não é o primeiro elemento filho do pai, é necessário um seletor CSS adicional. O elemento pai tem uma classe chamada `article-content`. Podemos utilizar esta classe em conjunto com o seletor `:first-of-type` para criar o nosso seletor final: `.article-content p:first-of-type`.
Aqui está a lista final com os seletores:
- Título: `h1`
- Imagem de capa: `figure img`
- Primeiro parágrafo: `.article-content p:first-of-type`
Construir o scraper
Agora que temos as dependências no projeto, vamos ver como usar o Cheerio e o Puppeteer em conjunto para criar um scraper web. Ao combinar estas duas ferramentas, pode criar um scraper que é rápido e poderoso, por isso vamos começar!
Crie um ficheiro chamado `scrape.js` e cole o seguinte código nele:
const puppeteer = require('puppeteer');
const cheerio = require('cheerio');
async function scrape() {
// Launch a headless Chrome browser
const browser = await puppeteer.launch();
// Create a new page
const page = await browser.newPage();
// Navigate to the website you want to scrape
await page.goto('https://arstechnica.com/tech-policy/2023/01/musk-led-twitter-faces-another-lawsuit-alleging-it-failed-to-pay-bills/');
// Wait for the page to load
await page.waitForSelector('h1');
// Extract the HTML of the page
const html = await page.evaluate(() => document.body.innerHTML);
// Use Cheerio to parse the HTML
const $ = cheerio.load(html);
// Extract the title, cover image, and paragraph using Cheerio's syntax
const title = $('h1').text();
const paragraph = $('.article-content p:first-of-type').text()
const coverImage = $('figure img').attr('src');
// Display the data we scraped
console.log({
title,
paragraph,
coverImage
});
// Close the browser
await browser.close();
}
scrape();
Pode executar o código usando o comando node scrape.js. A saída deve exibir o título do artigo e o URL da imagem de capa, e deve ficar assim:
{
title: 'Lawsuit: Twitter failed to pay $136,000 in rent at San Francisco office tower',
paragraph: 'The Elon Musk-owned Twitter is facing another lawsuit alleging that it failed to pay its bills.',
coverImage: 'https://cdn.arstechnica.net/wp-content/uploads/2023/01/getty-musk-twitter-800x533.jpg'
}
Passar para o próximo nível
Agora que já aprendeu a extrair dados básicos de uma única página web usando o Puppeteer e o Cheerio, está na hora de levar as suas competências de web scraping para o próximo nível. Eis o que pode fazer para transformar este scraper básico num scraper de última geração:
- Extrair uma categoria inteira: Ao modificar o URL e os seletores no seu código, pode extrair os artigos de uma categoria. Isto é útil para extrair grandes quantidades de dados ou para acompanhar atualizações numa categoria específica de conteúdo.
- Utilizar um agente de utilizador diferente em cada pedido: Ao alterar o agente de utilizador do seu scraper, pode contornar restrições e imitar melhor o comportamento humano. Isto pode ser útil para fazer scraping em sites que bloqueiam ou limitam os pedidos com base no agente de utilizador.
- Integrar uma rede de proxy: Uma rede de proxy pode ajudá-lo a alternar endereços IP e evitar a deteção. Isto é especialmente útil para extrair dados de sites que bloqueiam IPs ou limitam a frequência das solicitações.
- Resolver captchas: Alguns sites utilizam captchas para impedir o scraping automatizado. Existem várias formas de contornar captchas, tais como utilizar um serviço de resolução de captchas ou implementar um modelo de aprendizagem automática para reconhecer e resolver captchas.
Conclusão
A esta altura, já deve ter uma boa compreensão dos pontos fortes e das limitações do Cheerio e do Puppeteer, e deve ser capaz de tomar uma decisão informada sobre qual deles se adequa melhor às suas necessidades. Existe uma ferramenta de web scraping para si, quer seja um principiante ou um programador experiente.
Se quiser aprofundar-se no Cheerio, consulte este artigo escrito por um dos meus colegas. Aborda temas como a identificação de nós utilizando o Inspect Element, o armazenamento dos resultados em disco e a extração de dados de um site de grande dimensão como o Reddit com mais pormenor.
Apenas abordámos superficialmente as capacidades do Puppeteer. Se quiser saber mais, este artigo aprofunda o tema e aborda tópicos como tirar uma captura de ecrã, enviar um formulário e fazer scraping de várias páginas.
Esperamos que este artigo o tenha ajudado a compreender as opções disponíveis e a tomar a melhor decisão para as suas necessidades de web scraping.
Uma alternativa ainda mais fácil
Embora tenhamos discutido os pontos fortes e as limitações do Cheerio e do Puppeteer, existe outra opção que poderá considerar: utilizar um scraper como serviço, como o WebScrapingAPI.
Utilizar um serviço como este traz várias vantagens:
- Pode confiar que o scraper é fiável e bem mantido: o scraper dispõe de recursos dedicados para garantir que está atualizado e a funcionar corretamente. Isto pode poupar-lhe muito tempo e esforço em comparação com a criação e manutenção do seu próprio scraper.
- Um serviço de scraper web pode muitas vezes ser mais económico do que construir o seu próprio: não terá de investir no desenvolvimento e manutenção do scraper e poderá tirar partido de quaisquer funcionalidades especiais ou suporte que a empresa ofereça.
- Ser detetado deixará de ser um problema: um scraper web premium evita a deteção e, muitas vezes, consegue extrair dados de sites de forma mais eficaz e eficiente do que um scraper que crie você mesmo. Isto poupa-lhe tempo e permite-lhe concentrar-se na análise e utilização dos dados extraídos.
Recomendamos que experimente o nosso scraper web e comprove por si mesmo as vantagens de utilizar uma ferramenta fiável e de confiança. Crie uma conta gratuita agora.




