MiProveedorDeDatos » Soluciones » Raspado web » Desarrollo de raspado web » C#

Cómo extraer datos del sitio web en C#

Si no desea leer y solo desea descargar ejemplos de código c#

Antes de comenzar con el web scarping en C#, debemos saberlo. ¿Qué es el raspado web? Web Scraping es un raspado de datos que se utiliza para extraer datos de sitios web. Los otros términos utilizados para web scarping son recolección web o extracción de datos web.
El raspado web se utiliza para el raspado de contactos y como componente de las aplicaciones utilizadas para la indexación web, la minería web y la minería de datos. monitoreo de cambio de precio en línea y comparación de precios, raspado de reseñas de productos (para ver la competencia), monitoreo de datos meteorológicos, detección de cambios en el sitio web, investigación, seguimiento de la presencia y reputación en línea, mashup web e integración de datos web; puede leer más sobre esto en nuestra página sobre servicio de raspado web.

Web Scraping con C#

Con el paso del tiempo, el proceso de extracción de datos va en aumento. Se puede acceder a los datos en diferentes sitios web a través de su API web o servicios web. Si algunos sitios web no proporcionan o no permiten el acceso a sus datos, entonces se utiliza Web scraping para acceder a los datos. Raspado web que permite a los desarrolladores simular y automatizar el comportamiento de navegación humana para extraer archivos de contenido, imágenes y otra información de aplicaciones web para realizar tareas específicas.
Ahora les mostraré cómo descartar un sitio web con C# aquí en miproveedordedatos. voy a chatarra eBay que es un sitio web muy famoso que usa C#. Este proceso sigue un procedimiento y el procedimiento contiene diferentes pasos que se detallan a continuación.

vídeo de demostración

Raspado web de C#: descubra cómo crear un raspador web de C#: ejemplo de eBay

Vamos a desarrollar Web Scraper con c# para Ebay

Abra Visual Studio. Agregue un nuevo proyecto y elija la aplicación de consola C# de la plantilla. Nombre el proyecto como EbayScrapper como se muestra en la fig.

Después de esto, vaya al sitio web de eBay. Aqui esta el link. https://www.ebay.com

En el sitio web de eBay, vaya a la búsqueda avanzada y busque xbox one. Se mostrarán los elementos relacionados con esto.

Copie esta URL y péguela en el programa principal porque eliminará esta página web más adelante en este artículo.

Referencias obligatorias

Después de esto, necesitaremos instalar los siguientes paquetes de C# NuGet simplemente haciendo clic con el botón derecho en la referencia en el directorio del programa.
1) Cliente HTTP
2) Paquete HtmlAgility
Las siguientes son las cosas necesarias para desechar este sitio web.

El siguiente código determinará exactamente el código del sitio web que podemos verificar en el sitio web.
[código lang=”csharp”]

estático vacío principal (cadena [] args)
{
GetHtmlAsync();
Console.ReadLine ()
}

Vacío estático GetHtmlAsync()
{
var url ="https://www.ebay.com/sch/i.html?_nkw=xbox+one&_in_kw=1&_ex_kw=&_sacat=0&LH_Complete=1&_udlo=&_udhi=&_samilow=&_samihi=&_sadis=15&_stpos=&_sargn=-1%26saslc%3D1&_salic=1&_sop=12&_dmd=1&_ipg=50";
var httpclient = new HttpClient();
var html = httpclient.GetStringAsync(url);
Consola.WriteLine(Resultado.html);
}
[/ Code]

La salida de este código es la siguiente:

Simplemente copiamos y pegamos el código del sitio web en el bloc de notas para asegurarnos de algunas cosas que usaremos más adelante.

Ahora, después de esto, analizaremos los datos de eBay en nuestra aplicación. Para esto usamos el documento Html. Escribiremos un código para los elementos de la lista de captura. Escribimos este código de acuerdo con el código del sitio web.
[código lang=”csharp”]
var ProductosHtml = htmlDocumento.NodoDocumento.Descendientes("ul")
.where(nodo => nodo.GetAttributeValue("id", "")
.Equals("ListViewInner")).ToList();
var ProductListItems = ProductsHtml[0].Descendientes("li")
.where(nodo => nodo.GetAttributeValue("id", "")
.Contains("elemento")).ToList();
Console.WriteLine(ProductListItems.Count());
Console.WriteLine ();
[/ Code]

Después de ejecutar el programa, usamos el punto de interrupción en un momento específico y está claro que el conteo es 50. Tenemos toda la información relacionada con un elemento y el visualizador de prueba se mostrará como:

Ahora, estos pasos extraerán toda la información del sitio web a la aplicación de mi consola. Para esto voy a hacer alguna implementación al código existente.

En primer lugar, voy a usar para cada ciclo que clasificará las cosas en mi consola según el sitio web.

En primer lugar, voy a sacar la identificación de la lista porque cada anuncio en el sitio web tiene una identificación única. Para esto debo tener que usar algunas cosas adicionales en el código que son las siguientes:
[código lang=”csharp”]
foreach( var ProductListItem en ProductListItems)
{
//IDENTIFICACIÓN
Console.WriteLine(ProductListItem.GetAttributeValue("listingid", ""));
[/ Code]

Lo siguiente que voy a sacar es el nombre del producto. El nombre del producto y el código de identificación deben escribirse para cada bucle. El código del nombre del producto se escribirá de acuerdo con el uso del atributo en el código del sitio web. El código se mostrará de la siguiente manera:
[código lang=”csharp”]
//Nombre del producto
Console.WriteLine(ProductListItem.Descendants("h3")
.where(nodo => nodo.GetAttributeValue("clase", "")
.Equals("lvtitle")).FirstOrDefault().InnerText.Trim('\r', '\n', '\t'));
[/ Code]

Lo siguiente que voy a sacar es el precio del producto. El precio del código del producto también se escribirá de acuerdo con el uso del atributo en el código del sitio web. El código se mostrará de la siguiente manera:
[código lang=”csharp”]
//Precio
Console.WriteLine(ProductListItem.Descendants("li")
.where(nodo => nodo.GetAttributeValue("clase", "")
.Equals("lvprice prc")).FirstOrDefault().InnerText.Trim('\r','\n','\t')
);
[/ Code]

Todas estas implementaciones se realizan de acuerdo con los anclajes y atributos del sitio web.
Estos son los detalles del producto. Lo siguiente que sacaré es el tipo de lista cuyo código se da como:
[código lang=”csharp”]
//Tipo de listado
Console.WriteLine(ProductListItem.Descendants("li")
.where(nodo => nodo.GetAttributeValue("clase", "")
.Equals("lvformat")).FirstOrDefault().InnerText.Trim('\r', '\n', '\t')
);
[/ Code]

Lo último que debe extraerse es el enlace del producto tal como figura en el sitio web y su código es el siguiente:
[código lang=”csharp”]
//URL
Console.WriteLine(ProductListItem.Descendants("a").FirstOrDefault().GetAttributeValue("href", "")
);
[/ Code]
El código general de este proceso de web scraping es el siguiente:

Salida

Producto de muestra

Producto de muestra en el sitio web de ebey.

Descargar muestra de C# Web Scraper