XPath одного уровня

226
18 мая 2017, 08:49

Привет имеется часть код страницы, не могу спарсить элементы одного уровня

<tr class="even" role="row">
  <td class="text-left" data-sort="6">TEXT</td>
  <td class="text-right" data-sort="18">
  <td> 102 </td>
  <td class="text-right" data-sort="19">11</td>
  <td> 14 </td>
  <td class="text-right" data-sort="16">
  <td data-sort="15.84">0</td>
</tr>

Нужно спарсит строку <td> 102 </td>, на прямую не получиться т.к. идет список <tr class="even" role="row"> и искать нужно уже внутри. Нахожу нужный заголовок по TEXT, а как спарсить уже на одном уровне не знаю

//td[@class='text-left' and contains(text(), 'TEXT')]

Что нужно дописать к моему коду?

Answer 1

Как я понял, нужно получить значения узлов td, которые не содержат атрибутов.

XPath-выражение может выглядеть следующим образом:

string xpath = "//tr[td[@class='text-left' and contains(text(), 'TEXT')]]/td[not(@*)]";

Ищется узел tr, содержащий узел td с нужными атрибутами и текстом. А потом берутся узлы td без атрибутов.

// Получаем один (первый) элемент td
var node = doc.SelectSingleNode(xpath);
// Получаем все элементы td
var nodes = doc.SelectNodes(xpath);
Answer 2

решил проблему так

using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using System.Net;
string text = driver.FindElement(By.XPath("//td[@class='text-left' and contains(text(), 'TEXT']/parent::tr/td[n]")).Text;

В проекте много библиотек, но использовал для selenium webdriver

READ ALSO
Onion архитектура asp.net mvc core приложения

Onion архитектура asp.net mvc core приложения

Я сделал небольшое приложение с, как мне кажется, нормальной многослойной архитектуройhttps://github

546
Парсинг с C# AngleSharp

Парсинг с C# AngleSharp

Пишу программу для парсинга одного сайта, использую AngleSharp библиотекуК сожалению документации не нашел, что усложняет процесс обучения

2537
Работа в Selenium web driver Action

Работа в Selenium web driver Action

Создаю объект класса Action и как параметр передаю Driver,но почему-то на Driver выдаёт ошибку'Framework

303
Бесконечный цикл асинхронно

Бесконечный цикл асинхронно

Имеется необходимость на всём протяжении работы программы в некотором классе Watcher получать сообщения из некоего динамического буфера (Mailslot,...

280