Как захватить элементы по классам или id в HTML Source в C #?

c# html html-agility-pack parsing

Вопрос

Я пытаюсь захватить элементы из источника HTML на основе имени класса или имени, используя приложение форм Windows C #. Я помещаю источник в строку с помощью WebClient и подключаю его к HTMLAgilityPack с помощью HtmlDocument.

Тем не менее, все примеры, которые я нахожу в пакете HTMLAgilityPack, анализируют и находят элементы на основе тегов. Мне нужно найти определенный идентификатор, например ссылку в html, и получить значение внутри тегов. Возможно ли это, и что было бы самым эффективным способом сделать это? Все, что я пытаюсь разобрать из идентификаторов, дает мне исключения. Благодаря!

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

Вы должны иметь возможность сделать это с помощью XPath:

HtmlDocument doc = new HtmlDocument();
doc.Load(@"file.htm");

HtmlNode node = doc.DocumentNode.SelectSingleNode("//*[@id=\"my_control_id\"]");
string value = (node == null) ? "Error, id not found" : node.InnerHtml;

Краткое объяснение xpath здесь:

  • // означает поиск везде в пути, используйте SelectNodes если он будет соответствовать кратным
  • * означает соответствие любому типу узла
  • [] определяют «Предикаты», которые в основном проверяют свойства относительно этого узла
  • [@id=\"my_control_id\"] означает найти узлы, у которых есть атрибут с именем «id» со значением «my_control_id»

Дальнейшая ссылка



Related

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