Pop

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());
            }
        }

No hay comentarios:

Publicar un comentario

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