private static async Task <List <DocLinkInfo> > GetDocumentsLinks(DocInfoType docType, ScrappedCompany c) { log.Info($"Obtendo documentos do tipo {docType} - {c.RazaoSocial}"); // HistoricoFormularioReferencia.aspx?codigoCVM=6017&tipo=itr&ano=0 var histUrl = $"HistoricoFormularioReferencia.aspx?codigoCVM={c.CodigoCVM}&tipo={docType.ToString().ToLower()}&ano=0"; var docs = new List <DocLinkInfo>(); // name = key // kink = value Console.WriteLine($"Obtendo lista de documentos {docType}"); var url = $"{BvmfScrapper.BASE_URL}{BvmfScrapper.LIST_URL}/{histUrl}"; var client = new HttpClient(); var response = await client.GetStringAsync(url); var parser = new HtmlParser(); var doc = parser.Parse(response); // o segundo h4 que contém o que desejamos. O primeiro é o título da página var h4 = doc.QuerySelectorAll("h4").Skip(1).Take(1).Single(); var list = GetSectionList(h4); var anchors = list.QuerySelectorAll("a"); foreach (var a in anchors) { // date, text, link //var a = (IHtmlAnchorElement)div.QuerySelector("a"); docs.Add(new DocLinkInfo(docType, (IHtmlAnchorElement)a)); } return(docs); }
public DocLinkInfo(DocInfoType doctype, IHtmlAnchorElement a) { Title = a.Text; DocType = doctype; Data = ParseDocLinkDate(a.Text); DataApresentacao = ParseDataApresentacao(a); Link = ParseDocLinkHref(a.Href); LinkType = ParseLinkType(Link); if (LinkType == LinkTypeEnum.CVM) { NumeroSequencialDocumento = ParseNumSequencial(Link); } }