Esempio n. 1
0
 public void ScrapearPropriedadesMasivo(int id_enlace)
 {
     /*Lista de paginas a scrapear*/
     using (var db = new ScrappingEntities())
     {
         foreach (var Enlace in db.Enlace_Hijo.Where((s => s.id_enlace == id_enlace && s.scrapped_date == null && s.inactive_date == null)).OrderBy(s => s.id_enlace))
         {
             this.ScrapearPropriedade(Enlace.id_enlace_hijo);
             this.controlMemoriaImacros();
         }
     }
 }
Esempio n. 2
0
        public void ScrapearListaPropriedas()
        {
            //Variables de control del scrapping
            #region Declaracion Variables de Control
            Boolean bEndOfPage      = false;
            Boolean bEndOfScrapping = false;
            int     i            = 1;
            string  sUrl         = "";
            string  sUrlNextPage = "";
            string  sScript      = "";
            string  sPublicacion = "";
            #endregion


            /*Lista de paginas a scrapear*/
            using (var db = new ScrappingEntities())
            {
                foreach (var Enlace in db.Enlace.Where((s => s.web == "segundamano")).OrderBy(s => s.id_enlace))
                {
                    //Restarting variables de control
                    bEndOfPage      = false;
                    bEndOfScrapping = false;
                    i            = 1;
                    sUrl         = "";
                    sPublicacion = "";
                    sUrlNextPage = "";
                    sScript      = "";

                    //Preparacion del sScript de scrapping
                    sScript  = "CODE:" + Environment.NewLine;
                    sScript += "CLEAR" + Environment.NewLine;
                    sScript += "VERSION BUILD=9002379" + Environment.NewLine;
                    sScript += "TAB T=1" + Environment.NewLine;
                    sScript += "TAB CLOSEALLOTHERS" + Environment.NewLine;
                    sScript += "URL GOTO=" + Enlace.url + Environment.NewLine;
                    sScript += "WAIT SECONDS=" + iWaitTime + Environment.NewLine;

                    //Llamada al imacros
                    app.iimPlay(sScript);

                    //Detectamos si el scrapping ha terminado
                    while (!bEndOfScrapping)
                    {
                        //Detectamos si la pagina ha terminado
                        while (!bEndOfPage)
                        {
                            //Looping por cada uno de los elementos encontrados
                            sScript = "CODE:TAG POS=" + i + " TYPE=a ATTR=class:dateLink EXTRACT=HREF";
                            app.iimPlay(sScript);
                            sUrl = app.iimGetLastExtract();
                            sUrl = sUrl.Replace("[EXTRACT]", "");

                            if ((sUrl.IndexOf("#EANF#") >= 0) || (sUrl.IndexOf("NODATA") >= 0))
                            {
                                bEndOfPage = true;
                            }
                            else
                            {
                                //Capturando la fecha de publicacion
                                sScript = "CODE:TAG POS=" + i + " TYPE=a ATTR=class:dateLink EXTRACT=TXT";
                                app.iimPlay(sScript);
                                sPublicacion = app.iimGetLastExtract();
                                sPublicacion = sPublicacion.Replace("[EXTRACT]", "");


                                //Configurando insert a la base de datos.
                                Enlace_Hijo_Validate Validate = new Enlace_Hijo_Validate();
                                Validate.publish_date = formatearFecha(sPublicacion);
                                Validate.url          = sUrl;
                                Validate.catched_date = DateTime.Now;
                                Validate.id_enlace    = Enlace.id_enlace;

                                //Guardando nueva liena
                                context.Enlace_Hijo_Validate.Add(Validate);
                                context.SaveChanges();
                                i++;
                            }
                        }
                        Console.WriteLine("End of page");

                        //Valida si hay una nueva pagina para recuperar enlaces
                        sScript = "CODE:TAG POS=1 TYPE=a ATTR=class:\"paginationLink paginationNextLink\" EXTRACT=HREF";
                        app.iimPlay(sScript);
                        sUrlNextPage = app.iimGetLastExtract();
                        sUrlNextPage = sUrlNextPage.Replace("[EXTRACT]", "");
                        if ((sUrlNextPage.IndexOf("#EANF#") >= 0) || (sUrlNextPage.IndexOf("NODATA") >= 0))
                        {
                            bEndOfScrapping = true;
                            bEndOfPage      = true;
                            Console.WriteLine("Enf of Enlace: " + Enlace.url);

                            /*Lanzamos el proceso que valida las nuevas propriedades*/
                            context.Database.ExecuteSqlCommand("SP_ENLACE_HIJO_VALIDATE @id_enlace = {0}", Enlace.id_enlace);
                        }
                        else
                        {
                            Console.WriteLine(sUrlNextPage);
                            //Saltamos a la seguinte pagina
                            i               = 1;
                            bEndOfPage      = false;
                            bEndOfScrapping = false;
                            sScript         = "CODE:URL GOTO=" + sUrlNextPage + Environment.NewLine;
                            app.iimPlay(sScript);

                            sScript = "CODE:WAIT SECONDS=" + iWaitTime + Environment.NewLine;
                            app.iimPlay(sScript);
                        }
                    }
                }
            }


            /*Cerramos el imacros*/
            app.iimClose();
        }