Запрос XPATH, HtmlAgilityPack и извлечение текста

c# html html-agility-pack xpath

Вопрос

Я пытался извлечь ссылки из класса под названием «tim_new». Мне тоже дали решение.

Здесь приводятся как решение, фрагмент, так и необходимая информация

Упомянутый запрос XPATH был "//a[@class='tim_new'] , мой вопрос в том, как этот запрос различал первую строку фрагмента (указанную в ссылке выше и вторую строку фрагмента).

В частности, что такое буквальный перевод (на английском языке) этого запроса XPATH.


Кроме того, я хочу написать несколько строк кода, чтобы извлечь текст, написанный против NSE:

<div class="FL gL_12 PL10 PT15">BSE: 523395 &nbsp;&nbsp;|&nbsp;&nbsp; NSE: 3MINDIA &nbsp;&nbsp;|&nbsp;&nbsp; ISIN: INE470A01017</div>

Пожелала бы помощь в формировании необходимого запроса выбора.

Мой код написан как:

IEnumerable<string> NSECODE = doc.DocumentNode.SelectSingleNode("//div[@NSE:]");

Но это не выглядит правильным. Поблагодарили бы за помощь.

Популярные ответы

XPath в первом отборе читает «выберите все элементы документа, у которых есть атрибут с именем class со значением tim_new». Материал в скобках - это не то, что вы возвращаете, это критерии, которые вы применяете к поиску.

У меня нет пакета гибкости HTML, но если вы пытаетесь запросить divs с «NSE:» в качестве своего текста, ваш XPath для второго запроса должен быть просто «// div», тогда вы захотите фильтровать используя LINQ.

Что-то вроде

var nodes = 
    doc.DocumentNode.SelectNodes("//div[text()]").Where(a => a.InnerText.IndexOf("NSE:") > -1);

Итак, на английском языке: «Верните все элементы div, которые немедленно содержат текст в LINQ, затем проверьте, что внутреннее текстовое значение содержит NSE:». Опять же, я не уверен, что синтаксис идеален, но это идея.

XPath "// div [@NSE:]" будет возвращать все divs, у которых есть и атрибут named, NSE :, который был бы незаконным в любом случае, потому что в имени атрибута не разрешено «:». Вы ищете текст элемента, а не один из его атрибутов.

Надеюсь, это поможет.'

Примечание. Если у вас есть вложенные <div>NSE: some text<div>NSE: more text</div></div> , они содержат текст как в <div>NSE: some text<div>NSE: more text</div></div> вы получите дубликаты результатов.



Related

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