Web Scraper com C# em apenas alguns minutos!
Suciu Dan em 12 de outubro de 2022
A importância da recolha de informações é conhecida desde a antiguidade e as pessoas que a utilizaram em seu benefício prosperaram.
Hoje em dia, podemos fazer isso de forma muito mais fácil e rápida utilizando uma ferramenta de recolha de dados, e criar o seu próprio raspador também não é difícil. A capacidade de obter contactos mais rapidamente, de vigiar a concorrência e a sua própria marca e de aprender mais antes de investir em ideias está na ponta dos dedos.
Nesta altura, já deve saber.
Se estiver interessado em saber mais sobre web scraping ou sobre como construir a sua ferramenta em C#, não deixe de participar!
A raspagem da Web é legal?
Bem, é legal, desde que o sítio Web que pretende extrair informação esteja de acordo com isso. Pode verificar isso adicionando "/robots.txt" ao endereço URL, como em http://httpbin.org/robots.txt, e lendo as permissões, ou consultando a secção TOS.
O que é o web scraping com c sharp?
A raspagem da Web é uma técnica automatizada utilizada por empresas de todas as dimensões para extrair dados para vários fins, como a otimização de preços ou a recolha de correio eletrónico. Os investigadores utilizam a raspagem da Web para recolher relatórios de dados e estatísticas, e os programadores obtêm grandes quantidades de dados para a aprendizagem automática.
Como é que funciona? Bem, para a maioria das ferramentas de raspagem da Web, tudo o que precisa de fazer é especificar o URL do sítio Web do qual pretende extrair dados. Dependendo das capacidades do raspador, este extrairá as informações dessa página Web de uma forma estruturada, pronta para ser analisada e manipulada da forma que desejar.
Tenha em conta que alguns scrapers apenas olham para o conteúdo HTML de uma página para ver as informações de uma página Web dinâmica. Neste caso, é necessária uma ferramenta de raspagem da Web mais sofisticada para completar o trabalho.
A utilização de um Web scraper é muito útil, pois pode reduzir o tempo que normalmente gastaria nesta tarefa. Copiar e colar dados manualmente não parece ser uma coisa divertida de fazer vezes sem conta. Pense no tempo que seria necessário para obter grandes quantidades de dados para treinar uma IA! Se estiver interessado em saber mais sobre a utilidade da extração de dados, dê uma vista de olhos!
Vamos ver como podemos criar a nossa ferramenta de recolha de dados da Web em apenas alguns minutos.
Criando seu próprio web scraper em C#
Para este tutorial, vou mostrar como um web scraper pode ser escrito em C#. Eu sei que usar uma linguagem de programação diferente, como Python, pode ser mais vantajoso para esta tarefa, mas isso não significa que seja impossível fazê-lo em C#.
A codificação em C# tem as suas vantagens, tais como:
- É orientado para os objectos;
- Tem melhor integridade e interoperabilidade;
- É uma plataforma cruzada;
1. Selecionar a página que pretende extrair
Em primeiro lugar, é preciso decidir qual a página Web que se pretende recolher. Neste exemplo, vou fazer scraping da Grécia na Wikipédia e ver que temas são apresentados no seu Índice. Este é um exemplo fácil, mas também pode ser aplicado a outras páginas Web.
2. Inspecionar o código do sítio Web
Utilizando as ferramentas de programação, pode inspecionar cada elemento para verificar e ver em que etiqueta se encontra a informação de que necessita. Basta clicar com o botão direito do rato na página Web e selecionar "inspecionar", e aparecerá uma "Caixa de inspeção do navegador".

Pode procurar a classe diretamente na secção de elementos ou utilizar a ferramenta de inspeção na página Web, como se mostra abaixo.

Assim, descobriu que os dados de que necessita estão localizados na etiqueta span que tem a classe toctext. O que vai fazer a seguir é extrair todo o HTML da página, analisá-lo e selecionar apenas os dados dentro dessa classe específica. Primeiro, vamos fazer alguns preparativos rápidos!
3. Preparar o espaço de trabalho
Pode utilizar o IDE que lhe for mais confortável. Neste exemplo, utilizarei o Visual Studio Code. Também é necessário instalar o .NET SDK.
Agora precisa de criar o seu projeto. Para o fazer, tem obviamente de abrir o Visual Studio Code. Depois, vai ao menu das extensões e instala o C# para o Visual Studio Code.

É necessário um local para escrever e executar o nosso código. Na barra de menus, selecione Ficheiro > Abrir ficheiro (Ficheiro > Abrir... no macOS) e, na caixa de diálogo, crie uma pasta que servirá de espaço de trabalho.
Depois de ter criado o local de trabalho, pode criar um modelo simples de aplicação "Hello World" introduzindo o seguinte comando no terminal dos nossos projectos:
dotnet nova consola
O seu novo projeto deve ter o seguinte aspeto:

De seguida, é necessário instalar estes dois pacotes:
- HtmlAgilityPack é um analisador HTML escrito em C# para ler/escrever DOM.
- O CsvHelper é um pacote que é utilizado para ler e escrever ficheiros CSV.
Pode instalá-los utilizando estas linhas de comando no terminal dos seus projectos:
dotnet add package csvhelper
dotnet add package htmlagilitypack
4. Escrever o código
Vamos importar os pacotes que instalámos há alguns minutos e alguns outros pacotes úteis para utilização posterior:
using CsvHelper;
using HtmlAgilityPack;
using System.IO;
using System.Collections.Generic;
using System.Globalization;
Fora da nossa função Main, vai criar uma classe pública para os títulos do seu índice.
public class Row
{
public string Title {get; set;}
}
Agora, voltando à função principal, é necessário carregar a página que se pretende raspar. Como referi anteriormente, vamos ver o que a Wikipédia está a escrever sobre a Grécia!
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://en.wikipedia.org/wiki/Greece");
O nosso próximo passo é analisar e selecionar os nós que contêm a informação que procura, que está localizada nas etiquetas span com a classe toctext.
varHeaderNames = doc.DocumentNode.SelectNodes("//span[@class='toctext']");
O que deve fazer com esta informação agora? Vamos armazená-las num ficheiro .csv para utilização posterior. Para fazer isso, primeiro é necessário iterar sobre cada nó que extraímos anteriormente e armazenar seu texto em uma lista.
O CsvHelper fará o resto do trabalho, criando e escrevendo as informações extraídas num ficheiro.
var titles = new List<Row>();
foreach (var item in HeaderNames)
{
titles.Add(new Row { Title = item.InnerText});
}
using (var writer = new StreamWriter("your_path_here/example.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteRecords(titles);
}
5. Executar o código
O código está pronto e agora só temos de o executar! Utiliza esta linha de comando no terminal. Certifica-te de que guardaste o teu ficheiro primeiro!
execução dotnet
Já está!
Espero que este artigo tenha ajudado a entender melhor os conceitos básicos de raspagem da Web usando C#.
É muito útil ter um scraper próprio, mas não se esqueça de que só pode fazer scraping de uma página Web de cada vez e ainda tem de selecionar manualmente as etiquetas dentro do código HTML do sítio Web.
Se pretender extrair várias outras páginas, será muito mais rápido utilizar um raspador do que selecionar as informações manualmente, sim, mas nem todos os sítios Web podem ser extraídos utilizando este método. Alguns sítios Web são dinâmicos e este exemplo não permite extrair todos os seus dados.
Já pensou em utilizar uma ferramenta pré-fabricada e mais avançada para o ajudar a fazer scraping em massa?
Que tal verificar o que uma API pode fazer por si? Aqui está um guia escrito por WebScrapingAPI para o ajudar a escolher uma API que possa satisfazer as suas necessidades.
Até à próxima!
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

Os selectores XPath são melhores do que os selectores CSS para a recolha de dados da Web? Conheça os pontos fortes e as limitações de cada método e faça a escolha certa para o seu projeto!


Aprenda a raspar tabelas HTML com Golang para uma poderosa extração de dados. Explore a estrutura das tabelas HTML e crie um raspador da Web usando a simplicidade, a simultaneidade e a robusta biblioteca padrão do Golang.


Domine a recolha de dados da Web sem ser bloqueado! Siga as dicas sobre como respeitar os Termos de Serviço, usar proxies e evitar bloqueios de IP. Extraia dados de forma ética e legal.
