#pragma warning restore 67 /// <summary> /// Instructs the cacher to generate a cache for the new resource /// </summary> /// <param name="FetchComplete">Fetch data to save</param> public void GenerateCacheFor(FetchCompleteEventArgs FetchComplete) { }
private void processaCupom(SimpleSpider spider, FetchCompleteEventArgs args) { if (args.Html.Contains("Nota não encontrada")) { return; } if (args.Html == "") { return; // ?? } if (args.Link.Uri.Host.Contains(".rj.gov.")) { return; // Usa POST } if (args.Link.Uri.Host.Contains(".es.gov.")) { return; // Usa POST } if (args.Link.Uri.Host.Contains(".rr.gov.")) { return; // Usa POST } if (args.Link.Uri.Host.Contains(".pb.gov.")) { return; // Captcha } if (args.Link.Uri.Host.Contains(".ro.gov.")) { return; // Captcha } if (args.Link.Uri.Host.Contains(".ma.gov.")) { return; // Captcha } if (args.Link.Uri.Host.Contains(".ap.gov.")) { return; // Redirect -> Captcha } if (args.Link.Uri.Host.Contains(".pi.gov.")) { return; // Erro interno, um dia volta ? } if (args.Html.Contains("iframe")) { var frame = new Tag(args.GetDocument()).SelectTag <IFrame>(); if (frame == null) { return; // Ainda não sei como pegar } var newUri = frame.Src; spider.AddPage(new Uri(newUri), args.Link); return; } if (args.Html.Contains("CPF")) { contagemCPF++; } else if (args.Html.Contains("CNPJ")) { var ocorrencias = args.Html.Split("CNPJ"); if (ocorrencias.Length > 2) { } } else { } }
public bool CanProcessPage(FetchCompleteEventArgs args) => args.Html.Length > 30 && args.Html.Substring(0, 20).Contains("html", StringComparison.InvariantCultureIgnoreCase);
public IEnumerable <Uri> GetLinks(FetchCompleteEventArgs args) { return(AnchorHelper.GetAnchors(args.Link, args.GetDocument())); }
private static void Spider_FetchCompleted(object Sender, FetchCompleteEventArgs args) { var spider = (SimpleSpider)Sender; var hObj = args.GetHObject(); if (args.Link.EndsWith("/quem-sao")) { var lista = hObj["select > #parametro-nome > option"].GetAttributeValues("value"); spider.AddPages(lista.Where(i => i.Length > 0) .Select(c => new Uri($"https://www.camara.leg.br/deputados/{c}")), args.Link); for (int ano = 2021; ano >= 2020; ano--) { spider.AddPages(lista.Where(i => i.Length > 0) .Select(c => new Uri($"https://www.camara.leg.br/deputados/{c}/pessoal-gabinete?ano={ano}")), args.Link); } } else if (args.Link.Contains("/pessoal-gabinete?")) { string nomeDeputado = hObj["h1"].Trim(); int ano = args.Link.Uri.ToString().Split('=')[1].ToInt(); int deputado = args.Link.Uri.ToString().Split('/')[4].ToInt(); var rows = hObj["tr"]; var pessoas = new List <PessoalModel>(); foreach (var row in rows) { var cols = row["td"].TrimAll(); if (cols.Length == 0) { continue; } DateTime inicio = new DateTime(1900, 01, 01); DateTime fim = new DateTime(1900, 01, 01); var datas = cols[3].Split(' '); if (cols[3].Contains("Desde")) { inicio = datas[1].ToDateTime(); fim = DateTime.Now; } else if (cols[3].Contains("De ")) { inicio = datas[1].ToDateTime(); fim = datas[3].ToDateTime(); } var pessoa = new PessoalModel() { Ano = ano, IdDeputado = deputado, NomeDeputado = nomeDeputado, NomeFuncionario = cols[0], GrupoFuncional = cols[1], Cargo = cols[2], InicioExercicio = inicio, FimExercicio = fim, UrlRemuneracao = "", }; pessoas.Add(pessoa); } db.BulkInsert(pessoas, addReplace: true); } else { //Página do deputado int id = args.Link.Uri.ToString().Split('/')[4].ToInt(); Deputado dep = new Deputado() { Id = id, Nome = hObj["h2 > #nomedeputado"].Trim(), PartidoLideranca = hObj["span > .foto-deputado__partido-estado"].Trim(), }; foreach (var li in hObj["ul > .informacoes-deputado > li"]) { var hdr = li["span"].Trim(); switch (hdr) { case "Nome Civil:": dep.NomeCivil = li.Children("#text").Trim(); break; case "Telefone:": dep.Telefone = li.Children("#text").Trim(); break; case "E-mail:": dep.EMail = li["a"].Trim(); break; case "Endereço:": dep.Endereco = li.Children("#text").Trim(); break; case "Data de Nascimento:": dep.DataNascimento = li.Children("#text").Trim().ToDateTime(); break; case "Naturalidade:": dep.Naturalidade = li.Children("#text").Trim(); dep.Naturalidade_UF = dep.Naturalidade.Split('-')[1].Trim(); break; default: break; } } db.InsertOrReplace(dep); } }