¡Web Scraper con C# en sólo unos minutos!
Suciu Dan el 12 oct 2022
La importancia de la recopilación de información se conoce desde la antigüedad, y las personas que la han utilizado en su beneficio han prosperado.
Hoy en día podemos hacerlo mucho más fácil y rápido utilizando una herramienta de scraping, y crear tu propio scraper tampoco es difícil. La capacidad de reunir clientes potenciales más rápidamente, vigilar tanto a la competencia como a tu propia marca y aprender más antes de invertir en ideas está al alcance de tu mano.
Llegados a este punto, puede que ya lo sepas.
Si te interesa saber más sobre web scraping o cómo crear tu propia herramienta en C#, ¡no dudes en venir!
¿Es legal el web scraping?
Bueno, es legal siempre y cuando el sitio web que deseas scrapear esté de acuerdo con ello. Puedes comprobarlo añadiendo "/robots.txt" a su dirección URL como en http://httpbin.org/robots.txt y leyendo los permisos, o consultando su sección de TOS.
¿Qué es el web scraping con c sharp?
El web scraping es una técnica automatizada utilizada por empresas de todos los tamaños para extraer datos con diversos fines, como la optimización de precios o la recopilación de correos electrónicos. Los investigadores utilizan el web scraping para recopilar informes de datos y estadísticas, y los desarrolladores obtienen grandes cantidades de datos para el aprendizaje automático.
¿Cómo funciona? Bueno, para la mayoría de las herramientas de web scraping, todo lo que tienes que hacer es especificar la URL de la página web de la que deseas extraer datos. Dependiendo de las capacidades del scraper, extraerá la información de esa página web de forma estructurada, lista para que la analices y manipules como quieras.
Hay que tener en cuenta que algunos scrapers sólo miran el contenido HTML de una página para ver la información de una página web dinámica. En este caso, se necesita una herramienta de raspado web más sofisticada para completar el trabajo.
Utilizar un raspador web es muy útil, ya que puede reducir la cantidad de tiempo que normalmente dedicarías a esta tarea. Copiar y pegar datos manualmente no parece algo divertido de hacer una y otra vez. Piensa en lo que costaría obtener grandes cantidades de datos para entrenar a una IA. Si quieres saber más sobre la utilidad de la extracción de datos, échale un vistazo.
Veamos cómo podemos crear nuestra herramienta de web scraping en sólo unos minutos.
Crea tu propio raspador web en C#
Para este tutorial, te mostraré cómo se puede escribir un web scraper en C#. Sé que usar otro lenguaje de programación como Python puede ser más ventajoso para esta tarea, pero eso no significa que sea imposible hacerlo en C#.
Codificar en C# tiene sus ventajas, como:
- Está orientado a objetos;
- Tiene mejor integridad e interoperabilidad;
- Es multiplataforma;
1. Elegir la página que desea raspar
Lo primero es lo primero, tienes que decidir qué página web vas a raspar. En este ejemplo, voy a raspar Grecia en Wikipedia y ver qué temas se presentan en su Tabla de Contenidos. Se trata de un ejemplo sencillo, pero también puedes escalarlo a otras páginas web.
2. Inspección del código del sitio web
Con las herramientas de desarrollo, puedes inspeccionar cada elemento para comprobar bajo qué etiqueta está la información que necesitas. Basta con hacer clic con el botón derecho en la página web y seleccionar "inspeccionar", y aparecerá un "Cuadro de inspección del navegador".

Puede buscar la clase directamente en la sección de elementos o utilizando la herramienta de inspección de la página web, como se muestra a continuación.

Así, descubriste que los datos que necesitas se encuentran dentro de la etiqueta span que tiene la clase toctext. Lo que harás a continuación es extraer todo el HTML de la página, analizarlo y seleccionar sólo los datos dentro de esa clase específica. Primero, hagamos algunos preparativos rápidos.
3. Preparar el espacio de trabajo
Puede utilizar cualquier IDE que le resulte cómodo. En este ejemplo, usaré Visual Studio Code. También necesitará instalar .NET SDK.
Ahora tienes que crear tu proyecto. Para ello, obviamente tienes que abrir Visual Studio Code. Luego, irás al menú de extensiones e instalarás C# para Visual Studio Code.

Necesitas un lugar donde escribir y ejecutar nuestro código. En la barra de menús, seleccionarás Archivo > Abrir archivo (Archivo > Abrir... en macOS) y en el cuadro de diálogo, crearás una carpeta que servirá como nuestro espacio de trabajo.
Después de crear el lugar de trabajo, puede crear una plantilla de aplicación simple "Hello World" introduciendo el siguiente comando en el terminal de nuestro proyecto:
dotnet nueva consola
Tu nuevo proyecto debería tener este aspecto:

A continuación, debe instalar estos dos paquetes:
- HtmlAgilityPack es un analizador HTML escrito en C# para leer/escribir DOM.
- CsvHelper es un paquete que se utiliza para leer y escribir archivos CSV.
Puede instalarlos utilizando estas líneas de comando dentro del terminal de sus proyectos:
dotnet add package csvhelper
dotnet add package htmlagilitypack
4. Escribir el código
Vamos a importar los paquetes que instalamos hace unos minutos, y algunos otros paquetes útiles para su uso posterior:
using CsvHelper;
using HtmlAgilityPack;
using System.IO;
using System.Collections.Generic;
using System.Globalization;
Fuera de nuestra función Main, crearemos una clase pública para los títulos de nuestra tabla de contenidos.
public class Row
{
public string Title {get; set;}
}
Ahora, volviendo a la función Principal, tienes que cargar la página que deseas raspar. Como he mencionado antes, vamos a ver lo que Wikipedia escribe sobre Grecia.
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://en.wikipedia.org/wiki/Greece");
Nuestro siguiente paso es analizar y seleccionar los nodos que contienen la información buscada, que se encuentra en las etiquetas span con la clase toctext.
varHeaderNames = doc.DocumentNode.SelectNodes("//span[@class='toctext']");
¿Qué hacer ahora con esta información? Almacenémosla en un archivo .csv para su uso posterior. Para ello, primero tienes que iterar sobre cada nodo que extrajimos antes y almacenar su texto en una lista.
CsvHelper hará el resto del trabajo, creando y escribiendo la información extraída en un archivo.
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. Ejecución del código
El código está hecho y ahora sólo tenemos que ejecutarlo. Utiliza esta línea de comandos en el terminal. ¡Asegúrate de haber guardado tu archivo primero!
ejecutar dotnet
¡Ya está!
Espero que este artículo te haya ayudado a entender mejor los fundamentos del web scraping usando C#.
Resulta muy útil disponer de un raspador propio, pero hay que tener en cuenta que sólo se puede raspar una página web cada vez y que hay que seleccionar manualmente las etiquetas dentro del código HTML del sitio web.
Si quieres scrapear varias páginas más, será mucho más rápido usar un scraper que seleccionar la información manualmente, sí, pero no todos los sitios web pueden ser scrapeados usando este método. Algunos sitios web son dinámicos, y este ejemplo no extraerá todos sus datos.
¿Has pensado alguna vez en utilizar una herramienta prefabricada y más avanzada para ayudarte a raspar en masa?
¿Qué tal si compruebas lo que una API puede hacer por ti? Aquí tienes una guía escrita por WebScrapingAPI para ayudarte a elegir una API que se ajuste a tus necesidades.
Hasta la próxima.
Noticias y actualidad
Manténgase al día de las últimas guías y noticias sobre raspado web suscribiéndose a nuestro boletín.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Artículos relacionados

¿Son los selectores XPath mejores que los selectores CSS para el web scraping? Conozca los puntos fuertes y las limitaciones de cada método y tome la decisión correcta para su proyecto.


Aprenda a raspar tablas HTML con Golang para una potente extracción de datos. Explore la estructura de las tablas HTML y construya un raspador web utilizando la simplicidad, la concurrencia y la robusta biblioteca estándar de Golang.


¡Domina el web scraping sin que te bloqueen! Sigue los consejos para respetar las condiciones de servicio, utilizar proxies y evitar bloqueos de IP. Extrae datos de forma ética y legal.
