UFU
21 de fevereiro de 2024
Para esta aula eu segui diretamente o capítulo Web Scraping do livro R for Data Science, segunda edição, de Hadley Wickham.
Web scraping é o processo de extrair informações ou dados de páginas da web.
Podemos traduzir web scraping para o português como raspagem de dados na web ou simplesmente raspagem de dados.
quando existem formas mais simples de coletar os dados (API, por exemplo);
os termos de um site não nos permite fazer isso.
Para fazer a extração de informações de páginas da web, é necessário primeiro entender um pouco sobre HTML, a linguagem que descreve páginas web. HTML significa HyperText Markup Language (Linguagem de Marcação de Hipertexto).
<html> <head>
<title>Page title</title> </head>
<body>
<h1 id='first'>A heading</h1>
<p>Some text & <b>some bold text.</b></p>
<img src='myimg.png' width='100' height='100'>
</body>
HTML possui uma estrutura hierárquica formada por elementos, que consistem em uma tag de abertura (por exemplo, <tag>), atributos opcionais (id=‘first’), uma tag de fechamento (como </tag>), e conteúdo (tudo que está entre as tags de abertura e fechamento).
Existem mais de 100 elementos HTML. Alguns dos mais importantes são:
<html>, e deve ter dois elementos filhos: <head>, que contém metadados do documento, como o título da página, e <body>, que contém o conteúdo visível no navegador.<h1> (título 1), <section> (seção), <p> (parágrafo) e <ol> (lista ordenada) formam a estrutura geral da página.<b> (negrito), <i> (itálico) e <a> (link) formatam o texto dentro das tags de bloco.<img> é usada para exibir imagens na página;<table> (tabelas), <tr> (linhas da tabela), <th> (cabeçalhos da tabela), <td> (células da tabela);<div> cria uma divisão ou seção dentro da página.
Se você encontrar uma tag que nunca viu antes, pode descobrir o que ela faz com uma rápida pesquisa no ChatGPT.
A maioria dos elementos pode ter conteúdo entre suas tags de abertura e fechamento. Esse conteúdo pode ser tanto texto quanto outros elementos. Por exemplo, o seguinte HTML contém um parágrafo de texto, com uma palavra em negrito:
<p>
oi! meu <b>nome</b> é pedro.
</p>
As tags podem ter atributos nomeados, que se parecem com name1='value1' name2='value2'. Dois dos atributos mais importantes são id e class, que são usados em conjunto com Cascading Style Sheets (CSS) para controlar a aparência visual da página. Eles são frequentemente úteis ao extrair dados de uma página. Atributos também são usados para registrar o destino de links (o atributo href dos elementos <a>) e a fonte de imagens (o atributo src do elemento <img>).
HTML:
<p class="destaque">Este é um parágrafo em destaque.</p>
CSS:
.destaque{
font-weight: bold;
color: red;
}
read_html();Agora que você tem o HTML no R, é hora de extrair os dados de interesse! Primeiro, você aprenderá sobre os seletores CSS que permitem identificar os elementos de interesse e as funções do rvest que você pode usar para extrair dados deles.
CSS é uma ferramenta para definir o estilo visual de documentos HTML. O CSS inclui uma linguagem simplificada para selecionar elementos em uma página chamada seletores CSS. Os seletores CSS definem padrões para localizar elementos HTML e são úteis para scraping porque oferecem uma maneira concisa de descrever quais elementos você deseja extrair.
p: seleciona todos os elementos <p>.
.title: seleciona todos os elementos com a classe "title".
#title: seleciona o elemento com o atributo de id igual a "title"; os atributos de id devem ser únicos dentro de um documento, portanto, isso selecionará apenas um único elemento.
html_elements() para encontrar todos os elementos que correspondem ao seletor.Agora que você selecionou os elementos de interesse, será necessário extrair os dados, seja do conteúdo de texto ou de alguns atributos.
4.1 para extrair texto de elementos: html_text2;
4.2 para extrair dados de atributos: html_attr.
As tabelas HTML são compostas por quatro elementos principais: <table> (tabela), <tr> (linha da tabela), <th> (cabeçalho da tabela) e <td> (dados da tabela).
rvest fornece uma função que sabe como ler tabelas: html_table().
Para acessar a página que contém informações sobre os filmes da série Star Wars aqui.
Para nossa próxima tarefa, abordaremos algo um pouco mais desafiador: extrair as informações sobre as 250 melhores séries de acordo com o IMDb.
A página pode ser acessada por aqui.