Web Scraping facilitado: a importância da análise de dados
Suciu Dan em 26 de abril de 2023

A análise de dados é o processo de análise e transformação de dados estruturados ou não estruturados num formato mais específico que vários sistemas de software podem utilizar e compreender.
Para tornar este conceito mais fácil de compreender, eis alguns exemplos de analisadores:
- Analisadores CSV: para analisar e converter ficheiros CSV (Comma Separated Values) em formatos mais utilizáveis
- Analisadores JSON: para analisar e converter dados JSON (JavaScript Object Notation) em formatos mais utilizáveis
- Analisadores Regex: para analisar e extrair padrões específicos de texto utilizando expressões regulares
- Compiladores: para analisar e converter código escrito numa linguagem de programação em código legível por máquina noutra linguagem de programação
- Analisadores SQL: para analisar e interpretar uma consulta SQL, executar o comando e devolver os resultados
Quando se trata de recolha de dados da Web, a análise de dados é essencial. Os sítios Web são compostos por HTML, uma linguagem de marcação excelente para apresentar informações num ecrã, mas não tão boa para as máquinas lerem.
Quando fazemos scraping de um sítio Web, estamos a recolher uma grande sequência de HTML. Para fazer algo útil com essa informação, precisamos de a analisar.
Esta ação abordará a importância da análise de dados na recolha de dados da Web, bem como os diferentes tipos de analisadores de dados disponíveis, tais como bibliotecas de análise de HTML para várias linguagens de programação, expressões regulares e construção do seu analisador.
Criar um analisador de dados
Um bom analisador de dados pode extrair informações relevantes de um documento HTML com base em regras pré-definidas, independentemente do tipo de analisador utilizado. O processo de análise consiste em duas etapas principais: análise lexical e análise sintáctica.
A análise lexical é o processo de analisar palavras e símbolos individuais num documento e dividi-los em partes mais pequenas e mais fáceis de gerir.
Isto envolve a tokenização, que é o processo de dividir um documento em tokens individuais, tais como palavras-chave, símbolos e números.
Vamos dar uma olhadela a este documento HTML simples:
<html>
<head>
<title>Scraping</title>
</head>
<body>
<h1>Welcome to my scraping page</h1>
<p>This is a paragraph.</p>
<ul>
<li>First Scraping Item</li>
<li>Second Scraping Item</li>
</ul>
</body>
</html>
O processo de análise léxica tokenizaria este documento em elementos individuais, tais como:
- `<html>`
- `<head>`
- `<title>`
- `Scraping`
- `</title>`
- `<body>`
- `<h1>`
- `Bem-vindo à minha página de raspagem`
- `</h1>`
- [...]
- `</body>`
- `</html>`
Desta forma, cada elemento do documento HTML é dividido em tokens mais pequenos e mais fáceis de gerir, que podem ser posteriormente analisados e processados.
A análise sintáctica é o processo de análise da estrutura de um documento e de determinação da forma como os tokens individuais se relacionam entre si. Isto envolve a identificação de padrões e estruturas nos dados e a utilização desta informação para criar uma estrutura semelhante a uma árvore, designada por árvore de análise.
For example, the <html> tag is the root element, and it contains the <head> and <body> elements. Within the <head> element, there is a <title> element, and within the <body> element, there are <h1>, <p>, and <a> elements.
By identifying these elements and their relationships, you can construct a parse tree, with the <html> element as the root, <head> and <body> as its children, and so on.
You can use the parse tree to extract specific data from the HTML document, such as the text within the <title> element, or the href attribute of the <a> element.
Melhores bibliotecas de análise de HTML
Nesta secção, vamos explorar algumas das bibliotecas de análise de HTML mais populares disponíveis para diferentes linguagens de programação. Estas bibliotecas facilitam a extração de dados estruturados de um documento HTML e podem ser um excelente ponto de partida para o seu projeto de recolha de dados da Web.
Desde o Scrapy e o BeautifulSoup do Python, ao Cheerio do NodeJS e ao JSoup do Java, vamos analisar cada biblioteca e dar exemplos de como as utilizar.
Quer seja um principiante ou um programador experiente, esta secção dar-lhe-á uma sólida compreensão das opções disponíveis quando trabalhar com dados HTML.
Vamos começar!
Adeusinho
O Cheerio é uma biblioteca JavaScript que permite aos programadores analisar, manipular e navegar no DOM de um documento HTML ou XML, tal como funciona o jQuery. Este artigo entra em muito mais detalhes sobre o Cheerio e fala sobre diferentes casos de uso.
Aqui está uma implementação simples do cheerio:
const cheerio = require('cheerio');
const $ = cheerio.load('<h2 class="title">Hello, World!</h2>');
console.log($('h2').text())
Ao executar este código, obtém-se o seguinte resultado:
Olá, mundo!
Scrapy e BeautifulSoup
Scrapy e BeautifulSoup são bibliotecas para recolha de dados da Web em Python.
O Scrapy é uma poderosa estrutura de recolha de dados da Web que lhe permite extrair dados estruturados de sítios Web utilizando selectores ou expressões XPath.
Aqui está um exemplo básico do Scrapy:
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
def start_requests(self):
urls = [
'https://quotes.toscrape.com/page/1/',
'https://quotes.toscrape.com/page/2/',
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
page = response.url.split("/")[-2]
filename = f'quotes-{page}.html'
with open(filename, 'wb') as f:
f.write(response.body)
self.log(f'Saved file {filename}')
Pode executar o código com este comando:
citações do scrapy crawl
BeautifulSoup é uma biblioteca que lhe permite analisar documentos HTML e XML e extrair dados dos mesmos de uma forma semelhante à de um navegador Web.
Aqui está uma implementação simples do BeautifulSoup:
from bs4 import BeautifulSoup
html_doc = """<html><head><title>Scraper</title></head>
<body>
<h1 class="title">Hello, World!</h1>
</body>"""
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.title.string)
Ambas as bibliotecas fornecem uma API simples e conveniente para percorrer, pesquisar e modificar o conteúdo de páginas Web, e têm uma utilização perfeita em projectos de recolha de dados da Web.
JSoup
Se a sua linguagem de programação de eleição for Java, o JSoup é um analisador de dados que fornece uma API conveniente para extrair e manipular dados, utilizando o melhor dos métodos DOM, CSS e jQuery.
Isto permite-lhe analisar e navegar em documentos HTML e alterar o conteúdo de um documento utilizando uma API simples e intuitiva. A biblioteca é perfeita para projectos de raspagem, rastreio e extração de dados da Web.
Aqui está uma implementação simples do JSoup para extrair o texto da etiqueta de título:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JSoupExample {
public static void main(String[] args) {
String html = "<html><head><title>Example Title</title></head>"
+ "<body>Hello, World!</body></html>";
Document doc = Jsoup.parse(html);
// Get the title of the document
String title = doc.title();
System.out.println("Title: " + title);
}
}
Nokogiri
Nokogiri é uma biblioteca para Ruby que fornece uma interface fácil de utilizar para analisar e pesquisar documentos XML e HTML e suporta seletores XPath e CSS, o que a torna utilizada para tarefas de extração de dados e raspagem da Web.
Para uma análise mais abrangente das bibliotecas de analisadores de dados no ecossistema Ruby, pode ler este artigo.
Utilize este comando para instalar a gema nokogiri:
gem install nokogiri
O próximo exemplo de código é uma implementação simples do nokogiri:
require "nokogiri"
html = "<!DOCTYPE html><html><head><title>Hello, World!</title></head><body>Hello, World!</body></html>"
parsed_data = Nokogiri::HTML.parse(html)
puts parsed_data.title
Expressões regulares
As expressões regulares, também conhecidas como regex, são uma ferramenta poderosa para fazer corresponder padrões em cadeias de caracteres. São frequentemente utilizadas para tarefas de processamento de texto, como a pesquisa, validação e extração de informações de um documento.
Pode utilizar expressões regulares para extrair informações de HTML, procurando padrões específicos, como extrair endereços de correio eletrónico ou cabeçalhos de um documento HTML.
Por exemplo, para extrair todos os URLs de um documento HTML, pode utilizar a seguinte expressão regular:
/https?:\/\/[\w\.-]+\.[a-z]+/gi
Esta expressão corresponderá a qualquer cadeia de caracteres que comece com "http" ou "https" seguido de um ":" e duas barras, depois qualquer combinação de caracteres de palavras, pontos e hífenes, seguidos de um ponto e uma ou mais letras minúsculas. O sinalizador "gi" torna a pesquisa global e não diferencia maiúsculas de minúsculas.
A utilização de expressões regulares pode ser um pouco complicada, uma vez que a sintaxe pode ser complexa e a obtenção do padrão exato pode exigir algumas tentativas e erros. Existem também alguns sites como o Regex101 ou o Rubular, que o podem ajudar a testar e a depurar as suas expressões regulares.
Se não quiser utilizar as bibliotecas ou expressões regulares disponíveis, pode sempre construir o seu analisador.
Construir o seu analisador pode ser uma excelente forma de obter uma compreensão mais profunda dos dados com que está a trabalhar e também pode ser uma boa opção se tiver requisitos específicos que não são satisfeitos pelas bibliotecas ou ferramentas existentes.
Construir um analisador
Construir o seu analisador pode ser uma tarefa desafiante, mas também pode ser gratificante. O processo de construção de um analisador envolve a criação de um conjunto de regras e instruções que especificam como os dados são analisados e organizados.
Pode fazê-lo utilizando uma variedade de técnicas, tais como expressões regulares, máquinas de estados e análise de descida recursiva.
Ao construir um analisador, é crucial ter um conhecimento profundo da estrutura e do formato dos dados para poder conceber um conjunto adequado de regras e instruções para o analisador. A escolha de uma linguagem de programação adequada é também uma consideração importante.
Uma das vantagens de construir o seu analisador é o facto de o poder adaptar aos dados e ao caso de utilização em questão. Isto pode resultar num analisador mais eficiente e eficaz, em comparação com a utilização de uma biblioteca ou ferramenta genérica.
Além disso, construir o seu analisador também pode ser uma óptima experiência de aprendizagem, uma vez que lhe permite obter uma compreensão mais profunda dos conceitos e técnicas subjacentes à análise de dados.
Construir um analisador de raiz também tem desvantagens:
- Pode ser demorado e exigir um esforço significativo para conceber e implementar, especialmente se não estiver familiarizado com algoritmos de análise e estruturas de dados.
- Pode ser difícil fazer com que o seu analisador tenha o mesmo desempenho que as bibliotecas ou ferramentas existentes que foram optimizadas para desempenho.
- Pode ser difícil manter e atualizar o analisador ao longo do tempo se o formato ou a estrutura dos dados mudar.
- Pode ser difícil depurar ou encontrar erros no seu código, especialmente se não estiver familiarizado com o processo de análise.
- Pode ser propenso a erros e bugs, o que pode fazer com que o analisador não funcione como esperado.
- No caso de uma análise complexa, pode ser difícil implementar todas as regras e casos extremos.
- pode não ser tão eficiente como as bibliotecas e ferramentas pré-existentes, uma vez que estas foram optimizadas e utilizadas por muitas pessoas.
Em resumo, a construção de um analisador personalizado de raiz tem o seu próprio conjunto de desvantagens, como o elevado tempo de desenvolvimento, o elevado custo de manutenção e o elevado risco de erros. Geralmente, recomenda-se a utilização de bibliotecas ou ferramentas existentes ou a utilização de expressões regulares se estas puderem satisfazer os requisitos específicos do seu caso de utilização.
Metadados Schema.org
A análise de metadados do schema.org é uma forma de extrair dados estruturados de páginas Web utilizando normas de esquema Web. A comunidade por detrás do schema.org gere estas normas e promove a utilização do schema para dados estruturados na Web.
A análise de metadados de esquemas pode ser útil por várias razões, como encontrar informações actualizadas sobre eventos ou para investigadores que recolhem dados para estudos. Além disso, os sítios Web que agregam dados como listagens de imóveis, anúncios de emprego e previsões meteorológicas também podem beneficiar da análise de dados do esquema.
Existem diferentes formatos de esquema que pode utilizar, incluindo JSON-LD, RDFa e Microdata.
JSON-LD (JavaScript Object Notation for Linked Data) é um formato para codificar dados ligados utilizando JSON. A conceção desta norma facilita a leitura e a escrita por humanos e a análise e geração por máquinas.
Eis o aspeto do JSON-LD para uma página Web sobre um livro:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Book",
"name": "The Adventures of Tom Sawyer",
"author": "Mark Twain",
"datePublished": "1876-12-01",
"description": "The Adventures of Tom Sawyer is a novel about a young boy growing up along the Mississippi River in the mid-1800s. It is a classic of American literature and has been loved by generations of readers.",
"publisher": "Penguin Books",
"image": "https://www.example.com/images/tom_sawyer.jpg"
}
</script>
A recomendação do World Wide Web Consortium (W3C) é o RDFa, ou Resource Description Framework in Attributes, utilizado para incorporar declarações RDF em XML e HTML.
Pode ver abaixo como o RDFa ficaria dentro de uma página HTML. Pode reparar como os atributos das etiquetas são utilizados para armazenar os dados extra.
<!DOCTYPE html>
<html>
<head>
<title>RDFa Example</title>
</head>
<body>
<div about="http://example.com/books/the-great-gatsby" typeof="schema:Book">
<h1 property="schema:name">The Great Gatsby</h1>
<div property="schema:author" typeof="schema:Person">
<span property="schema:name">F. Scott Fitzgerald</span>
</div>
<div property="schema:review" typeof="schema:Review">
<span property="schema:author" typeof="schema:Person">
<span property="schema:name">John Doe</span>
</span>
<span property="schema:reviewBody">
A classic novel that explores themes of wealth, love, and the decline of the American Dream.
</span>
<span property="schema:ratingValue">4.5</span>
</div>
</div>
</body>
</html>
Os microdados são uma especificação HTML do WHATWG que é utilizada para aninhar metadados no conteúdo existente em páginas Web e pode utilizar schema.org ou vocabulários personalizados.
Eis um exemplo de microdados em HTML:
<div itemscope itemtype="http://schema.org/Product">
<span itemprop="name">Shiny new gadget</span>
<img itemprop="image" src="shinygadget.jpg" alt="A shiny new gadget" />
<div itemprop="offerDetails" itemscope itemtype="http://schema.org/Offer">
<span itemprop="price">$19.99</span>
<link itemprop="availability" href="http://schema.org/InStock" />
</div>
</div>
Existem muitas ferramentas disponíveis para analisar esquemas em diferentes linguagens, como o Extruct da Zyte e a biblioteca RDFLib, o que facilita a extração de dados estruturados de páginas Web utilizando normas de esquemas Web.
Analisadores Premium
Até agora, discutimos os fundamentos da análise de dados, incluindo os conceitos subjacentes de análise léxica e sintática. Também examinamos várias bibliotecas de código aberto para análise de dados, o uso de expressões regulares, a construção de um analisador a partir do zero e a análise de dados usando schema.org.
Pode sempre contar com um analisador Web como a API SERP da WebScrapingAPI ou a API da Amazon. Estes analisadores Web permitem-lhe extrair dados em tempo real sem ter de se preocupar com a manutenção, o código ou a infraestrutura.
Existem várias vantagens em utilizar um analisador Web de qualidade superior, incluindo:
- Fiabilidade: Os analisadores Web são geralmente mais estáveis e fiáveis do que as alternativas gratuitas ou de código aberto, que podem ser propensas a bugs e erros.
- Velocidade: Os analisadores Web são optimizados para velocidade e desempenho, permitindo-lhe extrair dados de forma rápida e eficiente.
- Escalabilidade: Os analisadores Web podem lidar com grandes volumes de dados e elevados níveis de tráfego, o que os torna adequados para projectos de extração de dados e raspagem em grande escala.
- Caraterísticas avançadas: Os analisadores Web incluem frequentemente caraterísticas e funcionalidades avançadas, como a rotação de IP, a falsificação do agente do utilizador e a resolução de CAPTCHA, que podem ajudá-lo a contornar as medidas anti-rastreio e a aceder a sítios Web bloqueados.
- Suporte e manutenção: Os analisadores Web são fornecidos com apoio ao cliente e actualizações regulares do software, garantindo-lhe o acesso às mais recentes funcionalidades e correcções de erros.
Mas sejamos honestos: os analisadores Web premium não trazem apenas vantagens. Aqui estão algumas desvantagens:
- Custo: Os analisadores Web de qualidade superior podem ter um custo mais elevado associado em comparação com as opções de código aberto
- Personalização limitada: A funcionalidade de um analisador web premium pode ser mais limitada em comparação com a construção do seu analisador
- Dependência do serviço: Se o serviço for abaixo ou tiver algum problema, isso pode afetar a sua capacidade de analisar dados
- Controlo limitado sobre os dados: Com um analisador Web premium, poderá ter menos controlo sobre os dados a que pode aceder e processar
- Dependência das fontes de dados do fornecedor: A qualidade e a relevância dos dados fornecidos pelo analisador Web de qualidade superior podem ser limitadas pelas fontes de dados do fornecedor.
Conclusão
Este artigo forneceu uma visão geral abrangente da análise de dados, incluindo o processo de análise, diferentes tipos de bibliotecas de análise HTML e como utilizar metadados schema.org para melhorar a SEO.
Também destacámos as vantagens e desvantagens da construção de um analisador personalizado, da utilização de expressões regulares e da utilização de ferramentas existentes.
Uma das principais conclusões é que a análise de dados é um passo crucial na recolha e análise de dados da Web, uma vez que permite extrair e organizar informações de uma forma útil.
Para o ajudar a começar, pode experimentar a nossa API SERP, uma ferramenta de raspagem da Web premium que o pode ajudar a extrair facilmente dados dos motores de busca. Se estiver interessado em experimentá-la, não hesite em inscrever-se na nossa avaliação gratuita de 14 dias.
Notícias e actualizações
Mantenha-se atualizado com os mais recentes guias e notícias sobre raspagem da Web, subscrevendo a nossa newsletter.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Artigos relacionados

Faça scraping da Amazon de forma eficiente com a solução económica da Web Scraping API. Aceda a dados em tempo real, desde produtos a perfis de vendedores. Registe-se agora!


Aprenda a extrair sites dinâmicos renderizados em JavaScript usando o Scrapy e o Splash. Desde a instalação até à escrita de um spider, à manipulação da paginação e à gestão das respostas do Splash, este guia abrangente oferece instruções passo a passo tanto para principiantes como para especialistas.


Explore o poder transformador da recolha de dados da Web no sector financeiro. Desde dados de produtos a análises de sentimentos, este guia oferece informações sobre os vários tipos de dados da Web disponíveis para decisões de investimento.
