Парсинг 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)); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д