Получить «.name a» с помощью пакета html agility? - PullRequest
0 голосов
/ 09 августа 2010

Я пытаюсь получить все ссылки на ссылку, когда ее родительским классом является name_of_box.Я написал ниже, но ничего не получил.Как мне это сделать?С помощью CSS я могу выбрать его с помощью .name_of_box a

var ls = htmldoc.DocumentNode.Elements("//div[@class='name_of_box']//a[@href]");

Ответы [ 2 ]

0 голосов
/ 25 января 2012

Это можно легко сделать с помощью fizzler - библиотеки .NET для выбора элементов из дерева узлов на основе селектора CSS.Реализация по умолчанию основана на HTMLAgilityPack и выбирает из документов HTML.

См .:

var ls = htmldoc.DocumentNode.QuerySelectorAll(".name_of_box a"); 
0 голосов
/ 09 августа 2010

HtmlAgilityPack не имеет возможности напрямую запрашивать значение атрибута.Вы должны перебрать список узлов привязки.Вот один из способов:

var ls = new List<string>(); 
var nodes = htmldoc.DocumentNode.SelectNodes("//div[@class='name_of_box']//a");
nodes.ToList().ForEach(a => ls.Add(a.GetAttributeValue("href", "")));

Но есть экспериментальная сборка , которую вы можете посмотреть, которая позволит вам напрямую запросить атрибут.

...