Выберите элементы с атрибутом data-url, используя HTMLAgilityPack

.net c# html-agility-pack

Вопрос

Я пишу немного Download-Roboter, который ищет ссылки в нижних слоях для себя.

Мне нужно найти все ссылки на html-странице (ссылки на .jpg файлы, а также ссылки на .pgn, .pdf, .html, .... - файлы)

Я использую html-agilitypack, чтобы найти все ссылки a-href.

Образец кода:

foreach (HtmlNode link in htmlDocument.DocumentNode.SelectNodes("//a[@href]"))
{
    HtmlAttribute attribute = link.Attributes["href"];
    links.Add(attribute.Value);
}

Но я также хочу найти URL-адреса данных.

Какой синтаксис XPath я должен использовать для поиска URL-адресов. Пример данных-url в htmlcode:

    <div class="cbreplay" data-url="2012\edmonton\partien.pgn"></div>

Мне нужен «2012 \ edmonton \ partien.pgn» из этого примера. Как я могу понять это с помощью синтаксиса XPath?

Лучше всего привет, если я сделал некоторые плохие ошибки, скажите мне. Это мой первый вопрос.

Принятый ответ

Следующее должно делать то, что вы хотите:

foreach (HtmlNode divNode in htmlDocument.DocumentNode.SelectNodes("//div[@data-url]"))
{
    HtmlAttribute attribute = divNode.Attributes["data-url"];
    links.Add(attribute.Value);
}

Фактически, оператор //div[@data-url] должен выбрать все узлы с атрибутом data-url. Затем мы вытаскиваем этот атрибут.

Если для этого атрибута есть узлы, отличные от div, тогда //*[@data-url] должен сделать трюк.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow