Парсинг html: получить значение между тегами - C#
Формулировка задачи:
Я вот хочу написать парсер, наткнулся на код и он получал атрибуты href, я хотел получить значение между <a></a>
Написал вот это :
wClient = new WebClient();
wClient.Proxy = null;
wClient.Encoding = encode;
var doc = new HtmlDocument();
doc.LoadHtml(wClient.DownloadString("http://dota2.ru/heroes/"));
var listsNode = doc.DocumentNode.SelectNodes("//div[@class='list']");
foreach (HtmlNode s in listsNode)
{
foreach (HtmlNode aNode in s.ChildNodes)
{
if (aNode.Name == "a")
{
Console.WriteLine(aNode.InnerText);
}
}
}
Console.ReadKey();
textual
Листинг программы
static List<dynamic> DownloadHeroes()
{
var wc = new WebClient() { Encoding = Encoding.UTF8 };
var doc = new HtmlDocument();
doc.LoadHtml(wc.DownloadString("http://dota2.ru/heroes/"));
var nodes = doc.DocumentNode.SelectNodes("//div[@class='list']/*/div[@data-name]");
return nodes.Select(node => new
{
Name = node.Attributes["data-name"].Value,
AttackType = node.Attributes["data-attack-type"].Value,
DataRole = node.Attributes["data-role"].Value
.Split(new char[] { ' ', '-' }, StringSplitOptions.RemoveEmptyEntries)
}).ToList < dynamic>();
}
var heroes = DownloadHeroes();
foreach (var hero in heroes)
{
Console.WriteLine("{0}\nТип атаки: {1}\nРоль: {2}\n",
hero.Name, hero.AttackType, String.Join(", ", hero.DataRole));
}