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