Webscraping en C#
¿Qué es IronWebScraper?
IronWebScraper es una biblioteca de clases y un marco para C# y la plataforma de programación .NET que permite a los desarrolladores leer mediante programación sitios web y extraer su contenido. Es ideal para realizar ingeniería inversa de sitios web o intranets existentes y convertirlos de nuevo en bases de datos o datos JSON. También es útil para descargar grandes volúmenes de documentos de internet.
En muchos aspectos, Iron Web Scraper es similar a la biblioteca Scrapy para Python, pero aprovecha las ventajas de C#, en particular su capacidad para recorrer el código mientras se realiza el proceso de raspado web y depurarlo.
Instalación
Su primer paso será instalar Iron Web Scraper, lo cual puede hacer desdeNuGet o pordescargar la DLLde nuestro sitio web.
Todas las clases que necesitará se encuentran en el espacio de nombres Iron Web Scraper.
PM > Install-Package IronWebScraper
Casos de uso populares
Migración de sitios web a bases de datos
IronWebScraper proporciona las herramientas y métodos que le permitirán volver a convertir sus sitios web en bases de datos estructuradas. Esta tecnología resulta útil a la hora de migrar contenidos de sitios web e intranets heredados a su nueva aplicación C#.
Migrando Sitios Web
Poder extraer fácilmente el contenido de un sitio web parcial o completo en C# reduce el tiempo y el coste que supone migrar o actualizar los recursos de un sitio web o una intranet. Esto puede ser mucho más eficaz que las transformaciones SQL directas, ya que reduce los datos a lo que puede verse en cada página web, y no requiere comprender las estructuras de datos SQL anteriores ni construir consultas SQL complejas.
Rellenar los índices de búsqueda
Iron Web Scraper puede apuntar a su propio sitio web o intranet para leer datos estructurados, leer cada página y extraer los datos correctos para que un motor de búsqueda dentro de su organización pueda poblarse con precisión.
IronWebScraper es una herramienta ideal para scrapear contenidos para su índice de búsqueda. Una aplicación de búsqueda como IronSearch puede leer contenido estructurado de IronWebScraper para construir un potente sistema de búsqueda empresarial.
Uso de Iron Webscraper
Para aprender a utilizar Iron Web Scraper, lo mejor es ver ejemplos. Este ejemplo básico crea una clase para scrapear títulos de un blog de un sitio web.
using IronWebScraper;
namespace WebScrapingProject
{
class MainClass
{
public static void Main(string [] args)
{
var scraper = new BlogScraper();
scraper.Start();
}
}
class BlogScraper : WebScraper
{
public override void Init()
{
this.LoggingLevel = WebScraper.LogLevel.All;
this.Request("https://ironpdf.com/blog/", Parse);
}
public override void Parse(Response response)
{
foreach (var title_link in response.Css("h2.entry-title a"))
{
string strTitle = title_link.TextContentClean;
Scrape(new ScrapedData() { { "Title", strTitle } });
}
if (response.CssExists("div.prev-post > a [href]"))
{
var next_page = response.Css("div.prev-post > a [href]")[0].Attributes ["href"];
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
{
public override void Init()
{
this.LoggingLevel = WebScraper.LogLevel.All;
this.Request("https://ironpdf.com/blog/", Parse);
}
public override void Parse(Response response)
{
foreach (var title_link in response.Css("h2.entry-title a"))
{
string strTitle = title_link.TextContentClean;
Scrape(new ScrapedData() { { "Title", strTitle } });
}
if (response.CssExists("div.prev-post > a [href]"))
{
var next_page = response.Css("div.prev-post > a [href]")[0].Attributes ["href"];
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
Public Overrides Sub Init()
Me.LoggingLevel = WebScraper.LogLevel.All
Me.Request("https://ironpdf.com/blog/", AddressOf Parse)
End Sub
Public Overrides Sub Parse(ByVal response As Response)
For Each title_link In response.Css("h2.entry-title a")
Dim strTitle As String = title_link.TextContentClean
Scrape(New ScrapedData() From {
{ "Title", strTitle }
})
Next title_link
If response.CssExists("div.prev-post > a [href]") Then
Dim next_page = response.Css("div.prev-post > a [href]")(0).Attributes ("href")
Me.Request(next_page, AddressOf Parse)
End If
End Sub
End Class
End Namespace
Para raspar un sitio web específico, tendremos que crear nuestra propia clase para leer ese sitio web. Esta clase extenderá Web Scraper. Vamos a añadir algunos métodos a esta clase, incluyendo init, donde podemos establecer la configuración inicial y comenzar la primera solicitud, que a su vez provocará una reacción en cadena donde todo el sitio web será raspado.
También debemos agregar al menos un método Parse
. Los métodos de análisis leen las páginas web que se han descargado de Internet y utilizan selectores CSS similares a los de jQuery para seleccionar el contenido y extraer el texto y/o las imágenes relevantes para su uso.
Dentro de un método Parse
, también podemos especificar cuáles hipervínculos deseamos que el rastreador continúe siguiendo y cuáles ignorará.
Podemos utilizar el método scrape para extraer cualquier dato y volcarlo en un cómodo formato de archivo de estilo JSON para su uso posterior.
Avanzar
Para obtener más información sobre Iron Web Scraper, le recomendamos que lea el documentoDocumentación de referencia de la APIy, a continuación, empiece a consultar los ejemplos de la sección de tutoriales de nuestra documentación.
El siguiente ejemplo que le recomendamos es el deEjemplo de webscraping en C# "blogdonde aprenderemos a extraer el contenido textual de un blog, por ejemplo, de WordPress. Esto podría ser muy útil en una migración de sitio.
A partir de ahí, podría pasar a examinar los otrostutorial avanzado de webscraping ejemplos en los que podemos ver conceptos como sitios web con muchos tipos diferentes de páginas, sitios web de comercio electrónico, y también cómo utilizar múltiples proxies, identidades e inicios de sesión al raspar datos de Internet.