Webscraping in C

This article was translated from English: Does it need improvement?
Translated
View the article in English

O que é o IronWebScraper?

IronWebScraper é uma biblioteca de classes e um framework para C# e a plataforma de programação .NET que permite aos desenvolvedores ler sites programaticamente e extrair seu conteúdo. Isso é ideal para fazer engenharia reversa de sites ou intranets existentes e transformá-los novamente em bancos de dados ou dados JSON. Também é útil para baixar grandes volumes de documentos da internet.

Em muitos aspectos, IronWebScraper é semelhante à biblioteca Scrapy for Python, mas aproveita as vantagens do C#, particularmente sua capacidade de percorrer o código à medida que o processo de raspagem da web está em andamento e depurar.

Instalação

Seu primeiro passo será instalar o IronWebScraper, o que você pode fazer a partir do NuGet ou ao baixar o DLL do nosso site.

Todas as classes de que você precisará podem ser encontradas no namespace IronWebScraper.

Install-Package IronWebScraper

Casos de uso populares

Migração de sites para bancos de dados

O IronWebScraper fornece as ferramentas e os métodos que permitem reestruturar seus sites em bancos de dados estruturados. Essa tecnologia é útil ao migrar conteúdo de sites e intranets legados para seu novo aplicativo C#.

Migração de Websites

A capacidade de extrair facilmente o conteúdo de um site, parcial ou completo, em C# reduz o tempo e o custo envolvidos na migração ou atualização de recursos de sites e intranets. Isso pode ser significativamente mais eficiente do que transformações SQL diretas, pois simplifica os dados para o formato visualizável em cada página da web, sem exigir a compreensão das estruturas de dados SQL anteriores ou a criação de consultas SQL complexas.

Preenchendo índices de pesquisa

O IronWebScraper pode ser apontado para o seu próprio site ou intranet para ler dados estruturados, ler cada página e extrair os dados corretos para que um mecanismo de busca dentro da sua organização possa ser populado com precisão.

IronWebScraper é uma ferramenta ideal para extrair conteúdo para o seu índice de pesquisa. Um aplicativo de busca como o IronSearch pode ler conteúdo estruturado do IronWebScraper para construir um poderoso sistema de busca empresarial.

Usando o Iron Webscraper

Para aprender como usar o IronWebScraper, é melhor olhar para exemplos. Este exemplo básico cria uma classe para extrair títulos de um blog de um site.

using IronWebScraper;

namespace WebScrapingProject
{
    class MainClass
    {
        public static void Main(string [] args)
        {
            var scraper = new BlogScraper();
            scraper.Start();
        }
    }

    class BlogScraper : WebScraper
    {
        // Initialize scraper settings and make the first request
        public override void Init()
        {
            // Set logging level to show all log messages
            this.LoggingLevel = WebScraper.LogLevel.All;

            // Request the initial page to start scraping
            this.Request("https://ironpdf.com/blog/", Parse);
        }

        // Method to handle parsing of the page response
        public override void Parse(Response response)
        {
            // Loop through each blog post title link found by CSS selector
            foreach (var title_link in response.Css("h2.entry-title a"))
            {
                // Clean and extract the title text
                string strTitle = title_link.TextContentClean;

                // Store the extracted title for later use
                Scrape(new ScrapedData() { { "Title", strTitle } });
            }

            // Check if there is a link to the previous post page and if exists, follow it
            if (response.CssExists("div.prev-post > a[href]"))
            {
                // Get the URL for the next page
                var next_page = response.Css("div.prev-post > a[href]")[0].Attributes["href"];

                // Request the next page to continue scraping
                this.Request(next_page, Parse);
            }
        }
    }
}
using IronWebScraper;

namespace WebScrapingProject
{
    class MainClass
    {
        public static void Main(string [] args)
        {
            var scraper = new BlogScraper();
            scraper.Start();
        }
    }

    class BlogScraper : WebScraper
    {
        // Initialize scraper settings and make the first request
        public override void Init()
        {
            // Set logging level to show all log messages
            this.LoggingLevel = WebScraper.LogLevel.All;

            // Request the initial page to start scraping
            this.Request("https://ironpdf.com/blog/", Parse);
        }

        // Method to handle parsing of the page response
        public override void Parse(Response response)
        {
            // Loop through each blog post title link found by CSS selector
            foreach (var title_link in response.Css("h2.entry-title a"))
            {
                // Clean and extract the title text
                string strTitle = title_link.TextContentClean;

                // Store the extracted title for later use
                Scrape(new ScrapedData() { { "Title", strTitle } });
            }

            // Check if there is a link to the previous post page and if exists, follow it
            if (response.CssExists("div.prev-post > a[href]"))
            {
                // Get the URL for the next page
                var next_page = response.Css("div.prev-post > a[href]")[0].Attributes["href"];

                // Request the next page to continue scraping
                this.Request(next_page, Parse);
            }
        }
    }
}
Imports IronWebScraper

Namespace WebScrapingProject
	Friend Class MainClass
		Public Shared Sub Main(ByVal args() As String)
			Dim scraper = New BlogScraper()
			scraper.Start()
		End Sub
	End Class

	Friend Class BlogScraper
		Inherits WebScraper

		' Initialize scraper settings and make the first request
		Public Overrides Sub Init()
			' Set logging level to show all log messages
			Me.LoggingLevel = WebScraper.LogLevel.All

			' Request the initial page to start scraping
			Me.Request("https://ironpdf.com/blog/", AddressOf Parse)
		End Sub

		' Method to handle parsing of the page response
		Public Overrides Sub Parse(ByVal response As Response)
			' Loop through each blog post title link found by CSS selector
			For Each title_link In response.Css("h2.entry-title a")
				' Clean and extract the title text
				Dim strTitle As String = title_link.TextContentClean

				' Store the extracted title for later use
				Scrape(New ScrapedData() From {
					{ "Title", strTitle }
				})
			Next title_link

			' Check if there is a link to the previous post page and if exists, follow it
			If response.CssExists("div.prev-post > a[href]") Then
				' Get the URL for the next page
				Dim next_page = response.Css("div.prev-post > a[href]")(0).Attributes("href")

				' Request the next page to continue scraping
				Me.Request(next_page, AddressOf Parse)
			End If
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Para extrair dados de um site específico, precisaremos criar nossa própria classe para ler esse site. Essa classe estenderá a classe Web Scraper. Vamos adicionar alguns métodos a esta classe, incluindo Init, onde podemos definir configurações iniciais e iniciar a primeira solicitação, que resultará em uma reação em cadeia onde o site inteiro será raspado.

Também devemos adicionar pelo menos um método Parse. Os métodos de análise sintática leem páginas da web baixadas da internet e usam seletores CSS semelhantes ao jQuery para selecionar o conteúdo e extrair o texto e/ou as imagens relevantes para uso.

Dentro de um método Parse, podemos também especificar quais hiperlinks desejamos que o rastreador continue a seguir e quais ele ignorará.

Podemos usar o método Scrape para extrair quaisquer dados e armazená-los em um formato de arquivo conveniente, semelhante ao JSON, para uso posterior.

Seguindo em frente

Para saber mais sobre o IronWebScraper, recomendamos que você leia a Documentação de Referência de API e, em seguida, comece a olhar os exemplos na seção de tutoriais de nossa documentação.

O próximo exemplo que recomendamos que você veja é o exemplo de web scraping em C# de "blog" , onde aprendemos como podemos extrair o conteúdo de texto de um blog, como um blog do WordPress. Isso pode ser muito útil em uma migração de site.

A partir daí, você pode prosseguir para outros exemplos avançados de tutoriais de web scraping, onde podemos analisar conceitos como sites com muitos tipos diferentes de páginas, sites de comércio eletrônico e também como usar vários proxies, identidades e logins ao extrair dados da internet.

Darrius Serrant
Engenheiro de Software Full Stack (WebOps)

Darrius Serrant é bacharel em Ciência da Computação pela Universidade de Miami e trabalha como Engenheiro de Marketing WebOps Full Stack na Iron Software. Atraído por programação desde jovem, ele via a computação como algo misterioso e acessível ao mesmo tempo, tornando-a o meio ...

Leia mais
Pronto para começar?
Nuget Baixar 140,761 | Versão: 2026.7 recém-lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronWebScraper
executar um exemplo Observe como seu site alvo se transforma em dados estruturados.