Pop

Bot web Scraping - Web ESPN - Parte 4 🤔

4. Web Scraping de la página ESPN

  •  En este capítulo del curso de programación en c# con visual studio 2017 acabaremos de descargar los datos de los jugadores de la nba con nuestro bot. Además  empezaremos a pensar el diseño de nuestra base de datos para almacenar esta información.
  • En esta base de datos guardaremos algunos de los datos obtenidos para luego consultarlos en una aplicación que nos de las estadísticas que nosotros queramos consultar.En principio la idea que tengo es crear 4 tablas: una para guardar las estadísticas( puntos, rebotes, tapones ... ),otra para guardar los equipos , otra que guarda los datos del jugador (nombre, posición, altura....) y una última tabla que relacione estas tres tablas. Os dejo una imagen de como quedaría el diseño:



  • Os dejo el vídeo donde podemos ver lo que acabo de contar:

Bot web Scraping - Web ESPN - Parte 3 ✔

3. Web Scraping de la página ESPN

  •  En este capítulo del curso de programación en c# con visual studio 2017 continuamos con la técnica conocida como web scraping.  A grandes rasgos podemos decir que se trata de una técnica para extraer información de sitios web, es  un proceso para  recopilar información de forma automática de páginas que encontremos publicadas en la red.
  • En esta entrada volcamos de manera masiva a nuestra máquina los datos de unos 5000 jugadores. Como comentamos en el capítulo anterior buscamos en la página un div con  un  class que se llama 'player-bio': div[@class='player-bio'] , buscamos también la etiqueta h1 para guardar el nombre del jugador y por último buscamos otro div cuya clase sea 'mod-container mod-table mod-player-stats': div[@class='mod-container mod-table mod-player-stats'] . Una vez encontremos estos valores escribimos los n ficheros en disco mediante peticiones a la páginas que contienen la información de cada jugador dentro de un bucle while.
  • Os dejo el vídeo donde podemos ver lo que acabo de contar:

  • Os dejo el código visto en el vídeo:
static void Main(string[] args)
        {

            WebClient client = new WebClient();
            int contador = 1689;
            try
            {
                while (contador < 1000000)
                {
                    HtmlDocument doc = new HtmlDocument();
                    HtmlNode.ElementsFlags["br"] = HtmlElementFlag.Empty;
                    doc.OptionWriteEmptyNodes = true;

                    var web = HttpWebRequest.Create("http://www.espn.com/nba/player/_/id/" + contador.ToString() + "/");
                    Stream stream = web.GetResponse().GetResponseStream();
                    doc.Load(stream);

                    HtmlNode nombreJugador = doc.DocumentNode.SelectSingleNode("//body//h1");
                    StreamWriter sw = new StreamWriter("D:\\JugadoresNBA\\" + nombreJugador.InnerText + ".html", false);

                    string selector = "//div[@class='player-bio']";
                    HtmlNodeCollection nodoColecionInicio = doc.DocumentNode.SelectNodes(selector);
                    if (nodoColecionInicio != null && nodoColecionInicio.Count > 0)
                        foreach (HtmlNode node in nodoColecionInicio)
                        {
                            sw.WriteLine(node.InnerHtml);
                        }

                    selector = "//div[@class='mod-container mod-table mod-player-stats']";
                    HtmlNodeCollection nodoColecion = doc.DocumentNode.SelectNodes(selector);
                    if (nodoColecion != null && nodoColecion.Count > 0)
                        foreach (HtmlNode nodo in nodoColecion)
                        {
                            sw.WriteLine("ESTADISTICAS:");
                            sw.WriteLine(nodo.InnerHtml);
                        }

                    Console.WriteLine(contador.ToString());
                    sw.Close();
                    sw.Dispose();
                    contador++;
                    System.Threading.Thread.Sleep(3000);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

Aprende web Scraping - Web ESPN - Parte 2 👀

2. Web Scraping de la página ESPN

  •  En este capítulo del curso de programación en c# con visual studio 2017 continuamos con la técnica conocida como web scraping.  A grandes rasgos podemos decir que se trata de una técnica para extraer información de sitios web, se trata de un proceso para  recopilar información de forma automática de páginas que encontremos publicadas en la red.
  • En esta entrada comenzaremos ha obtener los datos referentes a las estadísticas de los jugadores. Para ello, utilizando la herramienta para desarrolladores que traen integrada los diferentes navegadores vemos como se llaman los componentes html de la paginas que queremos descargarnos a nuestra máquina. En nuestro caso las páginas que tienen una  estructura de url similar a:  http://www.espn.com/nba/player/_/id/1/  tienen un div   con  un  class que se llama   'player-bio':  div[@class='player-bio'] . Basándonos en esto podemos empezar  nuestro bot.
  • Os dejo el vídeo donde podemos ver lo que acabo de contar:

  • Os dejo el código visto en el vídeo:

        static void Main(string[] args)
        {

            WebClient client = new WebClient();
            HtmlDocument doc = new HtmlDocument();
            HtmlNode.ElementsFlags["br"] = HtmlElementFlag.Empty;
            doc.OptionWriteEmptyNodes = true;

            var web = HttpWebRequest.Create("http://www.espn.com/nba/player/_/id/1/");
            Stream stream = web.GetResponse().GetResponseStream();
            doc.Load(stream);

            foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='player-bio']"))
            {
                Console.WriteLine(node.InnerHtml);
            }

            Console.ReadLine();
                
       }
    }

Aprende web Scraping - Web ESPN - Parte 1

1. Web Scraping de la página ESPN

  •  En este capítulo del curso de programación en c# con visual studio 2017 vamos ha empezar con la técnica conocida como web scraping.  A grandes rasgos podemos decir que se trata de una técnica para extraer información de sitios web, se trata de un proceso para  recopilar información de forma automática de páginas que encontremos publicadas en la red. 
  • Antes de continuar  con la entrada del blog comentaros que en España el web scraping en sí, es legal. Es importante que entendamos que el problema no está en el uso de los crawlers o bots  para rastrear la red, sino en el uso que damos de los datos conseguidos. Como en nuestro caso el objetivo es simplemente aprender ha construir un bot para realizar esta tarea, y no le vamos a dar ningún uso comercial no creo que haya ningún problema. 
  • Una vez aclaradas estás cuestiones paso a comentaros lo que nos espera en las siguientes semanas en nuestro blog :
  1. Crearemos un programa que rastree la web  ESPN para obtener estadísticas de los jugadores.
  2. Una vez hecho esto guardaremos en nuestro disco duro un fichero por cada jugador encontrado. Como esto se trata de un ejemplo sólo me bajaré la información de unos 5000 jugadores.
  3.  Una vez tengamos almacenada la información en disco definir tablas en una base de datos para guardar la información.
  4. Volcar la información de los ficheros a nuestras base de datos.
  5. Crear un página web o aplicación de escritorio donde consultar las estadísticas.
  • Os dejo un enlace al vídeo donde os cuento la película:

Creando bot monitorización en c# - Capítulo 4

4. Creando bot monitorización en c# 

  •  En este capítulo del curso de programación en c# con visual studio 2017 finalizamos  la construcción de nuestro bot para monitorizar los cambios que se produzcan en un página determinada. Básicamente queremos saber cuando cambia un texto en una zona determinada de una página. 
  • En este capítulo veremos como hacer que una aplicación se ejecute con la periodicidad que nosotros le indiquemos.Para ello hacemos uso de las tareas programadas.Las tareas programadas son aquellas que usted puede configurar para que cualquier proceso, programa o archivo se ejecute el tiempo o fecha que usted desee. Los pasos a seguir son los siguientes:
  • Abrimos el programador de tareas:



  • Nos encontraremos con algo similar a esto:

  • Ahora pulsamos el botón derecho para crear una nueva tarea:



  • Nos aparecerá una ventana similar a la siguiente  donde configuraremos las características de la tarea:



  • Seleccionamos el archivos que queremos que se ejecute en la pestaña acciones:

  • Una vez hecho esto sólo nos queda configurar la periocidad. Tenéis la información al completo en el vídeo.

Creando bot monitorización en c# - Capítulo 2

2. Creando bot monitorización en c# 

  •  En este capítulo del curso de programación en c# con visual studio 2017 continuamos con la construcción de nuestro bot para monitorizar los cambios que se produzcan en un página determinada. Básicamente queremos saber cuando cambia un texto en una zona determinada de una página. Cuando el bot detecta un cambio desencadenara la acción que elijamos.
  • Como sólo queremos detectar el cambio que se produce en una sección determinada de la página, vamos a navegar en el documento cuando lo tengamos cargado en memoria, antes de guardar en disco, para seleccionar y guardar únicamente la parte de la página que queremos monitorizar.
  • Una vez visto esto ya podemos ver el vídeo con la explicación:


  • Os dejo el código que hemos visto en el vídeo:
//Parte que guardo pagina en disco solo lo que me interesa de la página
  try
            {


                //Video  utilizar y guardar en disco
                WebClient cliente = new WebClient();
                String pagina = String.Empty;
                pagina = cliente.DownloadString("https://www.taiestado.com/");
                    

                StreamWriter sw = new StreamWriter("D:\\Temporal.html",false);
                sw.Write(pagina);
                sw.Close();
                sw.Dispose();

                //Video 2 guardar en disco solo la parte del fichero que me interesa
                var doc = new HtmlAgilityPack.HtmlDocument();
                HtmlAgilityPack.HtmlNode.ElementsFlags["br"] = HtmlAgilityPack.HtmlElementFlag.Empty;
                doc.OptionWriteEmptyNodes = true;

                var webRequest = HttpWebRequest.Create("https://www.taiestado.com/");
                Stream stream = webRequest.GetResponse().GetResponseStream();
                doc.Load(stream);
                stream.Close();

                string testDivSelector = "//div[@id='subcomentarios']";
                var divString = doc.DocumentNode.SelectSingleNode(testDivSelector).InnerHtml.ToString();


                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(ex.ToString());
                Console.ReadLine();
            }
        }

Creando bot monitorización en c# - Capítulo 1

1. Creando bot monitorización en c# 

  •  En este capítulo del curso de programación en c# con visual studio 2017 vamos ha empezar a construir un bot para monitorizar los cambios que se produzcan en un página determinada. Básicamente queremos saber cuando cambia un texto en una zona determinada de una página. Cuando el bot detecte un cambio desencadenara la acción que elijamos.
  • Un bot  es un programa informático que efectúa automáticamente tareas repetitivas a través de Internet.Un ejemplo de bots son los rastreadores web de los motores de búsqueda de Internet, que recorren los sitios web de forma automática y recopilan información de los mismos de manera mucho más rápida y efectiva de lo que lo haría una persona.
  • Una vez visto esto ya podemos ver el vídeo con la explicación:

  • Os dejo el código visto en el video, en el que guardo la página a chequear en disco:

static void Main(string[] args)
{

try
{
WebClient cliente = new WebClient();
String pagina = String.Empty;

pagina = cliente.DownloadString("https://www.taiestado.com/");

StreamWriter sw = new StreamWriter("D:\\Temporal.html", false);
sw.Write(pagina);
sw.Close();
sw.Dispose();

Console.WriteLine(pagina);
Console.ReadLine();
}
catch (Exception ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(ex.ToString());
Console.ReadLine();
}

}

Algoritmos de ordenación en c# - Algoritmo Shell Sort

6. Algoritmo de ordenación Shell Sort 

  •  En este capítulo del curso de programación en c# con visual studio 2017 vamos a continuar viendo algunos algoritmos de ordenación de vectores o arrays. En esta ocasión veremos el algoritmo de de ordenación Shell Sort.
  • El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta que  el ordenamiento por inserción es eficiente si la entrada está "casi ordenada". El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez. El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones
  • Una vez visto esto ya podemos ver el vídeo con la explicación:

  • Os dejo el código del algoritmo visto en el vídeo:
      public static void ShellShort()
        {

            int[] array = { 15,50, 17, 72, 12, 23, 54, 76, 75, 43, 8654, 87, 654, 9 };
            mostrar(array);
            Console.WriteLine("");
            ShellShort(array);
            Console.ReadLine();
            mostrar(array);
            Console.ReadLine();
        }

        public static void ShellShort(int[] array)
        {
            int mitad = 0;
            bool ejecutar = false;
            int aux = 0;
            int x = 0;
            mitad = array.Length / 2;
            while (mitad > 0)
            {
                ejecutar = true;
                while (ejecutar)
                {
                    ejecutar = false;
                    x = 1;
                    while (x <= (array.Length - mitad))
                    {
                        if (array[x - 1] > array[(x - 1) + mitad])
                        {
                            aux = array[(x - 1) + mitad];
                            array[(x - 1) + mitad] = array[x - 1];
                            array[(x - 1)] = aux;
                            ejecutar = true;
                        }
                        x++;
                    }
                }
                mitad = mitad / 2;
            }
        }

  • También os dejo el  código del proyecto con todos los algoritmos de ordenación vistos hasta ahora para descargar

Algoritmos de ordenación en c# - Algoritmo de ordenamiento por insercion

5. Algoritmo de ordenamiento por inserción

  •  En este capítulo del curso de programación en c# con visual studio 2017 vamos a continuar viendo algunos algoritmos de ordenación de vectores o arrays. En esta ocasión veremos el algoritmo de de ordenamiento por insercion.
  •  La idea de este algoritmo de ordenación consiste en ir insertando un elemento del array en la parte ordenado del mismo, asumiendo que el primer elemento es la parte ordenada, el algoritmo ira comparando un elemento de la parte desordenada del array con los elementos de la parte ordenada, insertando el elemento en la posición correcta dentro de la parte ordenada, y así sucesivamente hasta obtener el array ordenado.
  • Una vez visto esto ya podemos ver el vídeo con la explicación:
  • Os dejo el código del ejemplo visto en el vídeo:

  public static void OrdenaciónDirecta()
        {

            int[] array = { 50, 17, 72, 12, 23, 54, 76,75,43 ,8654,87,654,9};
            mostrar(array);
            Console.WriteLine("");
            OrdenaciónDirecta(array);
            Console.ReadLine();
            mostrar(array);
            Console.ReadLine();
        }

        public static void OrdenaciónDirecta(int[] array)
        {
            int aux;
            int j;
            for (int i = 0; i < array.Length; i++)
            {
                aux = array[i];
                j = i - 1;
                while (j >= 0 && array[j] > aux)
                {
                    array[j + 1] = array[j];
                    j--;
                }
                array[j + 1] = aux;
            }
        }
:

Algoritmos de ordenación en c# - Algoritmo HeapShort

4. Algoritmo HeapSort

  •  En este capítulo del curso de programación en c# con visual studio 2017 vamos a continuar viendo algunos algoritmos de ordenación de vectores o arrays. En esta ocasión veremos el algoritmo de ordenación HeapSort.
  •  Este algoritmo consiste en almacenar todos los elementos del vector a ordenar en un montículo y posteriormente  extraer el nodo que queda como nodo raíz del montículo en sucesivas iteraciones obteniendo el conjunto ordenado.
  • Una vez visto esto ya podemos ver el vídeo con la explicación:

  • Os dejo el código visto en el vídeo:
   public static void  HeapSort()
        {
            
                int[] array = { 50, 17, 72, 12, 23, 54, 76 };
                mostrar(array);
                Console.WriteLine("");
                HeapSort(array);
                Console.ReadLine();
                mostrar(array);
                Console.ReadLine();
            
        }


        static private void HeapSort(int[] array)
        {
           
            int tamanioArray = array.Length;
            for (int p = (tamanioArray - 1) / 2; p >= 0; p--)
                Maximos(array, tamanioArray, p);

            for (int i = array.Length - 1; i > 0; i--)
            {
                int temp = array[i];
                array[i] = array[0];
                array[0] = temp;

                tamanioArray--;
                Maximos(array, tamanioArray, 0);
                Console.WriteLine("");
                mostrar(array);
            }
          
        }

        private static void Maximos(int[] array, int tamanyo, int posicion)
        {
            int izquierda = (posicion + 1) * 2 - 1;
            int derecha = (posicion + 1) * 2;
            int mayor = 0;

            if (izquierda < tamanyo && array[izquierda] > array[posicion])
                mayor = izquierda;
            else
                mayor = posicion;

            if (derecha < tamanyo && array[derecha] > array[mayor])
                mayor = derecha;

            if (mayor != posicion)
            {
                int temp = array[posicion];
                array[posicion] = array[mayor];
                array[mayor] = temp;

                Maximos(array, tamanyo, mayor);
            }
        }

Curso .NET Core en C# - 34.Creamos nuestro propio log

34.Creamos nuestro propio log Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de  ASP.NET...