Vamos importar os pacotes que instalámos há alguns minutos, bem como alguns outros pacotes úteis para utilização posterior:
using CsvHelper;
using HtmlAgilityPack;
using System.IO;
using System.Collections.Generic;
using System.Globalization;
Fora da nossa função Main, irá criar uma classe pública para os títulos do seu índice.
public class Row
{
public string Title {get; set;}
}
Agora, voltando à função Main, precisa de carregar a página que deseja extrair. Como mencionei anteriormente, vamos ver o que a Wikipédia escreve sobre a Grécia!
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://en.wikipedia.org/wiki/Greece");
O nosso próximo passo é analisar e selecionar os nós que contêm a informação que procura, localizada nas tags span com a classe toctext.
varHeaderNames = doc.DocumentNode.SelectNodes("//span[@class='toctext']");
O que deve fazer com esta informação agora? Vamos guardá-la num ficheiro .csv para uso posterior. Para isso, primeiro precisa de percorrer cada nó que extraímos anteriormente e guardar o seu texto numa lista.
O CsvHelper fará o resto do trabalho, criando e gravando as informações extraídas num ficheiro.
var titles = new List<Row>();
foreach (var item in HeaderNames)
{
titles.Add(new Row { Title = item.InnerText});
}
using (var writer = new StreamWriter("your_path_here/example.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteRecords(titles);
}