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 que puede hacer desde NuGet o por descargar la DLL de 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#.

Migración de 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
VB   C#

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 añadir al menos un Analice método. 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 Analice también podemos especificar qué hipervínculos deseamos que el rastreador siga 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 documento Documentació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 de Ejemplo 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 otros tutorial 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.