Webscraping in C
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, o Iron Web Scraper é semelhante à biblioteca Scrapy for Python, mas aproveita as vantagens do C#, particularmente sua capacidade de percorrer o código passo a passo durante o processo de web scraping e depurá-lo.
Instalação
O primeiro passo será instalar o Iron Web Scraper, o que você pode fazer pelo NuGet ou baixando o arquivo DLL do nosso site.
Todas as classes de que você precisará podem ser encontradas no namespace Iron Web Scraper.
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 Iron Web Scraper pode ser configurado para acessar seu próprio site ou intranet, ler dados estruturados, analisar cada página e extrair os dados corretos para que um mecanismo de busca dentro da sua organização seja preenchido 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 a usar o Iron Web Scraper, o melhor é consultar 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
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. Adicionaremos alguns métodos a esta classe, incluindo Init, onde podemos definir configurações iniciais e iniciar a primeira solicitação, o que, por sua vez, causará uma reação em cadeia onde todo o site 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, também podemos especificar quais hyperlinks desejamos que o rastreador continue a seguir e quais ele irá 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 Iron Web Scraper, recomendamos que você leia a Documentação de Referência da API e, em seguida, comece a analisar os exemplos na seção de tutoriais da 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.

