コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: docLinkInfo.cs プロジェクト: mvgjorge/bvmfscrapper
 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);
     }
 }