public void SaveData(ImoveisVO vo, string urlPage, long codCurrent) { ImovelBO bo = new ImovelBO(); ConfigureLayout cl = new ConfigureLayout(); bo.InsertImovel(vo); cl.LayoutRegisterCadastred(urlPage); }
public void CrawlingNetImoveis() { try { List <CidadesVO> cidades = this.LoadParametersXml(); ConfigureLayout cl = new ConfigureLayout(); cl.LayoutInitial(Urls.urlNetImoveis); int? posicaoTag; int? posicaoSubString; int? posicaoInicioTag; int? posicaoFimTag; int[] vetTipoImovel = { 2, 3, 4, 5, 6, 7, 8, 9, 119, 125, 126, 128, 133, 140, 143, 145 }; decimal qtdImovelResult = 1000; List <long> listCodImovel = null; foreach (CidadesVO cidade in cidades) { for (int j = 0; j < vetTipoImovel.Count(); j++) { for (int i = 1; i <= qtdImovelResult; i++) { string urlPage = string.Format(Urls.urlNetImoveisCrawling, cidade.Key, vetTipoImovel[j], i); string HTML = this.RequestResponseHTML(urlPage); listCodImovel = new List <long>(); int tagIniciaImovel = 0; int tagFechaImovel = 0; posicaoTag = HTML.Trim().IndexOf("ContentPlaceHolder1_lb_total", tagIniciaImovel); posicaoSubString = HTML.Trim().IndexOf(">", posicaoTag.Value) + 1; posicaoFimTag = HTML.Trim().IndexOf("<", posicaoSubString.Value); qtdImovelResult = Math.Ceiling(Convert.ToDecimal(HTML.Trim().Substring(posicaoSubString.Value, posicaoFimTag.Value - posicaoSubString.Value)) / 20); if (qtdImovelResult == 0) { qtdImovelResult++; break; } else { while (tagIniciaImovel != -1) { tagIniciaImovel = HTML.Trim().IndexOf("<!-- Imovel-->", tagFechaImovel); posicaoTag = HTML.Trim().IndexOf("ListaCodigo", tagIniciaImovel); posicaoInicioTag = HTML.Trim().IndexOf(">COD. ", posicaoTag.Value) + 1; posicaoFimTag = HTML.Trim().IndexOf("<", posicaoInicioTag.Value); long codImovel = long.Parse((HTML.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value)).Trim().Replace("COD. ", "")); if (!listCodImovel.Contains(codImovel)) { listCodImovel.Add(codImovel); } tagFechaImovel = HTML.Trim().IndexOf("<!-- Fim do Imovel-->", tagIniciaImovel); tagIniciaImovel = HTML.Trim().IndexOf("<!-- Imovel-->", tagFechaImovel); if (tagIniciaImovel == -1) { cl.LayoutFinalizationImportation(urlPage, i); } } foreach (long itemCod in listCodImovel) { ImovelBO bo = new ImovelBO(); if (!bo.ExistImovel(itemCod)) { bo.InitLog(itemCod); string urlChild = string.Format(Urls.urlNetImoveisChildCrawling, itemCod); string filtratedHtml; Thread.Sleep(1500); string htmlChild = this.RequestResponseHTML(urlChild); if (htmlChild.Trim().IndexOf("DetalhePrecoCondIptu", 0) != -1) { ImoveisVO vo = new ImoveisVO(); posicaoTag = htmlChild.Trim().IndexOf("DetalhePrecoCondIptu", 0); posicaoTag = htmlChild.Trim().IndexOf("Preco", posicaoTag.Value); posicaoTag = htmlChild.Trim().IndexOf("DetalhePreco", posicaoTag.Value); posicaoInicioTag = htmlChild.Trim().IndexOf(">", posicaoTag.Value) + 1; posicaoFimTag = htmlChild.Trim().IndexOf("<", posicaoInicioTag.Value); filtratedHtml = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); vo.Preco = string.IsNullOrEmpty(filtratedHtml) ? 0 : Convert.ToDecimal(filtratedHtml.Replace("R$", " ")); int posicaoTagMarcacaoInicio = htmlChild.Trim().IndexOf("CaracPrincipal", 0); posicaoTag = htmlChild.Trim().IndexOf("dscTipo", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf(">", posicaoTag.Value) + 1; posicaoFimTag = htmlChild.Trim().IndexOf("<", posicaoInicioTag.Value); vo.Tipo = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); posicaoTag = htmlChild.Trim().IndexOf("DetalheBairro", 0); posicaoTag = htmlChild.Trim().IndexOf("_Bairro", posicaoTag.Value); posicaoInicioTag = htmlChild.Trim().IndexOf(">", posicaoTag.Value) + 1; posicaoFimTag = htmlChild.Trim().IndexOf("<", posicaoInicioTag.Value); vo.Bairro = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); vo.Codigo = itemCod; posicaoTag = htmlChild.Trim().IndexOf("Banhos", 0); posicaoTag = htmlChild.Trim().IndexOf("_banho", posicaoTag.Value); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); filtratedHtml = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); vo.QtdBanheiros = string.IsNullOrEmpty(filtratedHtml) ? 0 : int.Parse(filtratedHtml); posicaoTag = htmlChild.Trim().IndexOf("interfone", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); vo.Interfone = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value).ToLower().Equals("sim") ? true : false; posicaoTag = htmlChild.Trim().IndexOf("portale", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); vo.PortaoEletronico = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value).ToLower().Equals("sim") ? true : false; posicaoTag = htmlChild.Trim().IndexOf("areaPri", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); filtratedHtml = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); vo.Area = string.IsNullOrEmpty(filtratedHtml) ? 0 : float.Parse(filtratedHtml.Replace("m²", " ").Replace("Hec", " ")); posicaoTag = htmlChild.Trim().IndexOf("elevadorsocial", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); vo.ElevadorSocial = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value).ToLower().Equals("sim") ? true : false; posicaoTag = htmlChild.Trim().IndexOf("suites", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); filtratedHtml = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); vo.Qtdsuites = string.IsNullOrEmpty(filtratedHtml) ? 0 : int.Parse(filtratedHtml); posicaoTag = htmlChild.Trim().IndexOf("npavimentos", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); filtratedHtml = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); vo.QtdPavimentos = string.IsNullOrEmpty(filtratedHtml) ? 0 : int.Parse(filtratedHtml); posicaoTag = htmlChild.Trim().IndexOf("salaofestas", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); vo.Salaofestas = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value).ToLower().Equals("sim") ? true : false; posicaoTag = htmlChild.Trim().IndexOf("pscina", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); vo.Piscina = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value).ToLower().Equals("sim") ? true : false; posicaoTag = htmlChild.Trim().IndexOf("nsalas", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); filtratedHtml = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); vo.Qtdsalas = string.IsNullOrEmpty(filtratedHtml) ? 0 : int.Parse(filtratedHtml); posicaoTag = htmlChild.Trim().IndexOf("quartos", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); filtratedHtml = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); vo.Qtdquartos = string.IsNullOrEmpty(filtratedHtml) ? 0 : int.Parse(filtratedHtml); posicaoTag = htmlChild.Trim().IndexOf("varandas", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); filtratedHtml = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); vo.Qtdvarandas = string.IsNullOrEmpty(filtratedHtml) ? 0 : int.Parse(filtratedHtml); posicaoTag = htmlChild.Trim().IndexOf("portariapermanente", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); vo.PortariaPermanente = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value).ToLower().Equals("sim") ? true : false; posicaoTag = htmlChild.Trim().IndexOf("posicao", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); vo.Posicao = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); posicaoTag = htmlChild.Trim().IndexOf("vagas", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); filtratedHtml = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); vo.Qtdvagas = string.IsNullOrEmpty(filtratedHtml) ? 0 : int.Parse(filtratedHtml); posicaoTag = htmlChild.Trim().IndexOf("uniporandar", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); filtratedHtml = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); vo.Qtduniporandar = string.IsNullOrEmpty(filtratedHtml) ? 0 : int.Parse(filtratedHtml); posicaoTag = htmlChild.Trim().IndexOf("consominio", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); filtratedHtml = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); vo.PrecoCondominio = string.IsNullOrEmpty(filtratedHtml) ? 0 : decimal.Parse(filtratedHtml.Replace("R$", " ")); posicaoTag = htmlChild.Trim().IndexOf("iptu", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); filtratedHtml = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value); vo.PrecoIptu = string.IsNullOrEmpty(filtratedHtml) ? 0 : decimal.Parse(filtratedHtml.Replace("R$", " ")); posicaoTag = htmlChild.Trim().IndexOf("playground", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); vo.Playground = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value).ToLower().Equals("sim") ? true : false; posicaoTag = htmlChild.Trim().IndexOf("elevadorServico", posicaoTagMarcacaoInicio); posicaoInicioTag = htmlChild.Trim().IndexOf("b>", posicaoTag.Value) + 2; posicaoFimTag = htmlChild.Trim().IndexOf("</b", posicaoInicioTag.Value); vo.ElevadorServico = htmlChild.Trim().Substring(posicaoInicioTag.Value, posicaoFimTag.Value - posicaoInicioTag.Value).ToLower().Equals("sim") ? true : false; vo.Cidade = cidade.Key; vo.Origem = "Rede Net Imoveis"; vo.Estado = "Minas Gerais"; vo.DataHora = DateTime.Now; CrawlerSerialize serialize = new CrawlerSerialize(); serialize.SaveData(vo, urlChild, itemCod); } } else { bo.GenerateLog(itemCod, urlPage); cl.LayoutExistRegister(urlPage, itemCod); } } } Thread.Sleep(1500); } } } cl.LayoutImportationFinalized(Urls.urlNetImoveis); } catch (Exception ex) { ConfigureLayout cl = new ConfigureLayout(); cl.LayoutException(ex); } }