Apiasp.Net Core Web Scraping: Su guía para 2023
WebscrapingAPI el 15 Nov 2022
Apiasp.net core web scraping
El web scraping es una técnica preprogramada para extraer grandes volúmenes de datos de los sitios web. La mayoría de estos datos están desorganizados y en formato HTML. Sin embargo, después se transforman en información estructurada en una base de datos u hoja de cálculo para utilizarla en otros programas.
Para extraer datos de sitios web, el web scraping se puede realizar con una variedad de métodos únicos. Estos incluyen el aprovechamiento de los servicios en línea, APIs particulares, o incluso escribir su propio código desde cero para el web scraping. Puede acceder a los datos en un estilo estructurado en varios sitios web.
Aunque ésta suele ser la mejor opción, algunos sitios web carecen de la capacidad para proporcionar a los consumidores grandes volúmenes de datos de forma ordenada o no están muy avanzados en términos de innovación. En ese caso, es mejor emplear el web scraping para recopilar datos del sitio web.
Python es actualmente el lenguaje de programación más utilizado para el web scraping. Para el web scraping, Python pone a su disposición varias bibliotecas. .NET también se puede utilizar para el rastreo web de forma simultánea. Podemos raspar datos de muchos sitios web utilizando alguna API web de terceros.
Una API popular para el web scraping en .NET se llama WebScrapingAPI. Recientemente, incluyeron la edición .NET Core para el raspado web también.

Diferencia entre Web Scraping y Web Crawling
Los navegadores web se utilizan para exhibir metadatos en las páginas web que se encuentran en Internet, que alberga una cantidad considerable de datos. Los usuarios pueden desplazarse por los sitios web e interpretar los datos utilizando un navegador basado en páginas de visualización.
Web crawling y web scraping son términos utilizados para describir el proceso de extracción de código de puntos de vista. El web scraping es el proceso de analizar una página web y obtener información de ella. Buscar enlaces web y recibir su contenido de forma iterativa se denomina web crawling.
Ambas operaciones las lleva a cabo una aplicación, ya que para descubrir nuevas conexiones es necesario hacer scraping de páginas web. Ambas frases, que a veces se utilizan como sinónimos, se refieren al procedimiento de obtención de información. Sin embargo, sirven para muchas cosas.
¿Cómo y dónde pueden utilizarse esos conocimientos?
Las respuestas pueden encontrarse en línea en mayor cantidad que el número de sitios web. Este conocimiento puede ser una herramienta valiosa para crear aplicaciones, y entender cómo se escribe ese código podría aplicarse a las pruebas web automatizadas.
En este blog, hablaremos de dos métodos para rastrear y raspar la web en busca de datos aprovechando los navegadores y las peticiones HTTP básicas, además de las ventajas y desventajas de cada uno.
Utilización de consultas HTTP y navegadores web para descargar contenidos web
Dado que hoy en día casi todo está en línea, sin duda se puede encontrar un módulo para enviar peticiones HTTP en cualquier lenguaje de programación. Las peticiones HTTP sencillas se realizan rápidamente. Se tarda más en utilizar navegadores web como Firefox y Google Chrome como alternativa.
Se comportan y se presentan de manera diferente, modificando la forma en que cada actividad es y se muestran para ser fácilmente legible y se utiliza para tener en cuenta los estilos de visualización y la ejecución de secuencias de comandos en cuenta las páginas web. En ocasiones, los navegadores desperdician recursos. Por ejemplo, una simple petición HTTP puede ser suficiente si estás intentando recuperar texto de una página web y descargarlo como texto simple.
No obstante, dado que JavaScript se utiliza de forma tan generalizada, algunos materiales de muchos sitios web no pueden mostrarse si no se ejecuta. En este caso, la descarga de contenidos web se facilita utilizando un navegador.
Análisis CSS y XPath
XPath y CSS son dos métodos para analizar texto que se utilizan a menudo. Un lenguaje de marcado de consulta, XPath, se utiliza para identificar elementos específicos en archivos XML y Html.
Cada uno contiene una estructura específica, y ese patrón puede seguirse al escribir una consulta. Los selectores CSS son un medio para elegir elementos que utilizan un patrón de cadena y son ligeramente comparables a XPath porque los estilos CSS se aplican sobre la estructura HTML.
Preparación de la demostración
Estas demos hacen uso de los entornos C# y .NET core 3.1. Estas APIs deben funcionar en .NET 4x ya que no se han alterado mucho recientemente. También se incluye en el repositorio un sitio de ejemplo (una aplicación ASP.NET Core MVC) con tres páginas:
- Páginas con una tabla sencilla
- Páginas con un "enlace oculto" y
- Un botón que sólo se muestra después de un tiempo de espera
Producción de API web ASP.NET Core con Visual Studio 2022
Con .NET 6.0, Visual Studio 2022 puede utilizarse para desarrollar una API de aplicación web ASP.NET Core. Con Visual Studio, debe asignar un nombre legítimo al proyecto y seleccionar la plantilla ASP.NET Core Web app API.

Tienes el framework net core web API 6.0 como opción. Además, puede seleccionar el soporte por defecto Open API. Para el proyecto, esto resultará en metadatos sass.
Las API enumeradas aquí deben instalarse aprovechando el gestor de paquetes NuGet.
- HtmlAgilityPack
- Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.Tools
Para páginas estáticas
Configurar
Si utilizas C# es muy probable que ya trabajes con Visual Studio. En este post, se utiliza un proyecto de aplicación web basado en MVC.NET Core (Modelo Vista Controlador).
Aproveche el gestor de paquetes NuGet para incorporar las bibliotecas necesarias utilizadas durante toda esta guía después de crear un nuevo proyecto.

Para descargar los paquetes en NuGet, seleccione la opción "Examinar" e introduzca "HTML Agility Pack".

Ahora está preparado para proceder después de instalar el paquete. La tabla HTML adquirida puede analizarse fácilmente con este paquete para localizar las etiquetas y los datos que desea guardar.

Las siguientes APIs deben estar incluidas en el código antes de empezar a codificar el scraper a través del visual studio:
Uso de C# para enviar una solicitud HTTP a una página web
Considere un proyecto de ejemplo en el que se le pide que busque en Wikipedia datos sobre conocidos programadores informáticos. Si no hubiera un artículo sobre esto, Wikipedia no sería Wikipedia, ¿verdad?
https://en.wikipedia.org/wiki/list-of-programmers
En ese artículo se puede encontrar una lista de desarrolladores con hipervínculos a la página de Wikipedia de cada persona. Para su uso posterior, puede raspar la lista y guardar los datos en formato CSV (que, por ejemplo, Excel puede procesar fácilmente).
La idea principal detrás del web scraping en línea es localizar un sitio web que contenga los datos requeridos, utilizar C# para raspar la información y guardarla para su uso posterior. Este es sólo un ejemplo sencillo de lo que se puede lograr con el web scraping.
Los hipervínculos de una página de categoría superior pueden utilizarse para rastrear páginas web en proyectos más complicados. Sin embargo, vamos a concentrarnos en esa página específica de Wikipedia para los siguientes ejemplos.
Obtención de HTML con las API web .HttpClient NET Core
Un cliente HTTP incorporado para.NET se llama HttpClient y está disponible por defecto. No se necesitan bibliotecas o plugins independientes de terceros porque el dominio Net.HTTP lo hace todo. Además, incluye soporte nativo para llamadas retardadas.
El siguiente ejemplo muestra lo fácil que es obtener el contenido de cualquier URL de forma asíncrona y no bloqueante utilizando GetStringAsync()
private static async Task<string> CallUrl(string full URL)
{
HttpClient cliente = nuevo HttpClient();
var response = await client.GetStringAsync(URL completa);
respuesta de retorno;
}
Simplemente se genera un nuevo objeto HttpClient, se llama a GetStringAsync(), se "espera" a que termine, y luego se da el resultado a la persona que llama. Ahora que la tecnología ha sido añadida a la clase del controlador, puedes llamar a CallUrl() desde el método Index() sin más acciones. Vamos a llevarlo a cabo.
public IActionResult Index(){
cadena url ="https://en.wikipedia.org/wiki/List_of_programmers";
var response = CallUrl(url).Result;
return View();}
Aquí, especificamos la URL para Wikipedia en la URL, la llamamos con callUrl(), y guardamos el retorno en las variables dependientes.
Bien, el código necesario para enviar la petición HTTP ha sido completado. Aunque todavía no lo hemos procesado, es una excelente idea ejecutar el código inmediatamente para asegurarse de que se recibe el HTML de Wikipedia y no cualquier error.
Para ello, primero colocaremos un alto en el retorno View() en el método Index(). Esto asegurará que usted es capaz de ver los resultados utilizando la interfaz de usuario del depurador de Visual Studio.
Seleccionando la opción "Ejecutar" de la barra de herramientas de Visual Studio, puede probar el código mencionado anteriormente: En el punto de interrupción, Visual Studio se detendrá, permitiéndole ver el estado actual de la aplicación.
Levitando sobre la variable se ve que el servidor ha devuelto una página HTML válida, lo que indica que deberíamos estar listos para empezar. Si eliges "Visualizador HTML" en el menú contextual, verás una vista previa de la página HTML.
Análisis de HTML
Ahora es el momento de analizar la tabla HTML que se ha recuperado. Un parser muy popular llamado HTML Agility Pack puede integrarse fácilmente con LINQ, por ejemplo.
Antes de analizar la tabla HTML, debe comprender la estructura de la página para poder identificar con precisión los elementos que debe recuperar. Las herramientas de desarrollo de tu navegador volverán a serte útiles en esta situación porque te permiten examinar a fondo el árbol DOM.
Veremos en nuestra página de Wikipedia que los enlaces del índice son abundantes, por lo que no los necesitaremos. También hay otros enlaces adicionales, algunos de los cuales no necesitamos absolutamente para nuestra recopilación de datos (como los enlaces de edición).
Cuando miramos más profundamente, vemos que cada enlace que nos interesa está contenido dentro de un li> padre. Ahora sabemos que los li>s se utilizan tanto para la tabla de contenido de la página como para nuestros componentes de enlace reales basados en el árbol DOM.
Dado que en realidad no queremos que la tabla de contenido, debe asegurarse de que esos li>s se filtran. Por suerte, tienen clases HTML separadas, por lo que podemos omitir fácilmente cualquier elemento li> con clases de sección en el código.
¡Hora de codificar! Comenzaremos incluyendo el método ParseHtml en nuestra clase controladora ().
Aquí, inicialmente construimos una instancia HtmlDocument y luego cargamos la página HTML que descargamos previamente a través de CallUrl (). Ahora que poseemos una representación DOM legítima de nuestra página, podemos empezar a rasparla.
- Recibimos toda li> descendencia de Descendientes ()
- Para filtrar los elementos que utilizan las clases HTML mencionadas, utilizamos LINQ (Where()).
- En nuestras listas de cadenas wikiLink, recorremos (para cada uno) nuestros enlaces y preservamos sus URLs (relativas) como URLs relativas.
Devolvemos a nuestro interlocutor la lista de cadenas.
XPath
No habríamos tenido que elegir los elementos individualmente, y es importante darse cuenta. Sólo lo hicimos para dar buen ejemplo.
Aplicar una consulta XPath será considerablemente más práctico en los programas del mundo real. Eso permitiría que todo nuestro proceso de selección cupiera en una sola frase.
Similar a nuestro procedimiento convencional, esto elegirá cualquier (//) li> que no tenga la clase especificada (not(contains())).
Creación de un archivo para la exportación de datos raspados
El texto de la tabla HTML se descargó de Wikipedia, se analizó/procesó en un árbol DOM y se extrajeron con éxito todos los enlaces necesarios. Como resultado, ahora disponemos de una lista general de hipervínculos de la página.
Los enlaces deberían exportarse ahora a un fichero con formato CSV. Para escribir la información de la lista general a un archivo, construiremos un nuevo método llamado WriteToCsv(). El procedimiento completo se muestra en el código que sigue.
Crea un archivo en el disco duro local llamado "links.csv" y guarda en él los hipervínculos extraídos. Así pues, escribe datos en un archivo del disco local aprovechando las API nativas del marco.NET.
Conclusión
Con herramientas como WebScrapingAPI, es muy sencillo construir un proyecto de crawler y recopilar la información necesaria rápidamente. C# y .NET, en general, contienen todos los recursos y bibliotecas necesarios para que pueda aplicar su propio raspador de datos.

Los distintos métodos para evitar ser bloqueado o que el servidor reduzca tu tarifa es un tema que sólo hemos tocado brevemente. Por lo general, más que cualquier restricción técnica, es lo que se interpone en el camino del web scraping.
Si prefiere concentrarse en sus datos en lugar de lidiar con agentes de usuario, restricciones de tarifa, proxies y dificultades de JavaScript, eche un vistazo a las funciones de vanguardia de WebScrapingAPI.
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

Explore la comparación en profundidad entre Scrapy y Selenium para el scraping web. Desde la adquisición de datos a gran escala hasta la gestión de contenido dinámico, descubra los pros, los contras y las características únicas de cada uno. Aprenda a elegir el mejor marco de trabajo en función de las necesidades y la escala de su proyecto.


Explore el poder transformador del web scraping en el sector financiero. Desde datos de productos hasta análisis de opiniones, esta guía ofrece información sobre los distintos tipos de datos web disponibles para tomar decisiones de inversión.


¿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.
