Ir al contenido principal

Web Scraping con C#.

Web Scraping nos permite escanear los sitios web con el objetivo de poder extraer información relevante, muy usado hoy en día, en esta entrada veremos como podemos implementarlo con C# .net Core 3.1 para Twitter, todo con fines educativos claramente.


Empecemos

Lo primero que debemos crear es la aplicación de consola, a continuación instalamos  "HtmlAgilityPack" desde Nuget Packages, en este enlace podemos ver la página oficial del proyecto, esta librería nos permite tratar más fácilmente las paginas web, acceder a diferentes partes del DOM.

HtmlAgilityPack

Iniciamos definiendo la url del sitio que queremos examinar, para este caso "https://twitter.com/Twitter" acto seguido creamos nuestro objeto "HttpClient" que se encargará de hacer las llamadas http, este lo creamos desde una sentencia "using" que nos asegura que liberará los recursos una vez termine, hacemos la llamada usando "httpClient.GetAsync(url)" y verificamos que la llamada haya sido exitosa:


A continuación lo que haremos será leer la información retornada mediante: "response.Content.ReadAsStringAsync()" y guarderemos esta en un objeto "HtmlDocument", esta clase pertenece al paquete "HtmlAgilityPack" que instalamos y nos permitirá acceder fácilmente a los elementos que necesitamos.
Ahora vamos a usar esta herramienta, cargamos la respuesta en el objeto "HtmlDocument" mediante el método "LoadHtml" y accedemos al elemento que contiene la información que necesitamos mediante "GetElementbyId":


Ahora que tenemos el componente que necesitábamos podemos almacenarlo en un objeto dinámico, al estar en formato json podemos convertirlo fácilmente en un objeto y mostrar la información que queremos:


Los pasos son: decodificar el texto que estaba en formato html para transformar los caracteres de escape en texto normal, este string resultante esta en formato JSON y podemos convertirlo en un objeto dinámico, de este podemos acceder al objeto usuario y finalmente mostrar la información.

resultado

Finalmente el código completo nos queda así:

Comentarios

Entradas más populares de este blog

Ocelot Gateway y microservicios con .Net Core

Microservicios es una de las arquitecturas más usadas para grandes aplicaciones hoy en día, una vez el proyecto ha alcanzado un tamaño considerable debemos sopesar si lo mejor es dividir este en módulos de tal forma que cada uno de estos tenga una tarea independiente y un grupo de métodos propios, de esta forma facilitamos el mantenimiento, el rendimiento, la escalabilidad y podemos dividir nuestros grupos de desarrollo de tal forma que cada cual pueda enfocarse en una tarea en particular. Los Microservicios al final vendría siendo una colección de APIs cada una lo mas independiente posible de la otra, cada una con sus tareas, cada una con su propia base de datos, Ocelot Gateway nos permite agrupar todas estas APIs en una (o las que necesitemos) puertas de entrada, de tal forma que expongamos un solo conjunto de APIs a los clientes y no varias regadas a través de los diferentes microservicios. Empecemos. En este ejemplo construiremos una API y adicionaremos Ocelot Gateway para ...

Configurar Entity Framework en .Net Core 3.1, usando SQL Server.

En el post de hoy aprenderemos como configurar Entity framework (EF) para trabajar en una aplicación .Net. Entity es un Framework ORM (Mapeo Objeto-Relacional) que nos permite acceder más fácilmente a la base de datos, funciona de tal forma que los objetos de negocio están directamente relacionados con las tablas y columnas de la base de datos. Hay tres formas de programar en EF: Code First, Database First y Model First para este caso usaremos la primera, Code Firs como su nombre lo indica significa que primero programamos y luego usamos EF para construir la base de datos. Para este ejemplo usaremos Visual Studio 2019 y .Net Core 3.1. Empecemos. Para este ejemplo utilizaremos dos proyectos, uno como Interfaz y otro como una librería de acceso a datos, esto con el objetivo de que nuestra solución implemente la separación de intereses (separation of concerns). Creamos los proyectos. Crearemos dos proyectos, para el primero elegimos una aplicación " ASP.Net Core Web Ap...