Как выбрать конкретную ячейку таблицы с помощью пакета Agility Pack

html-agility-pack vb.net xpath

Вопрос

Я должен вытащить определенные поля из ячеек в таблице HTML. Используя Firebug, я смог получить точный XPath для ячеек, которые мне нужны (к сожалению, у ячеек нет тега id). Я думал, что могу использовать DocumentNode.SelectSingleNode и пройти по этому пути, но он, похоже, не работает правильно. Что я делаю не так? Или есть лучший подход к этому, чем то, как я это делаю? К сожалению, у меня нет опыта работы с XPath, так что это становится все труднее, чем я ожидал. Вот то, что у меня есть до сих пор (я знаю, что HTML особенно грязный, но это не меняет контроль):

Dim page As New HtmlAgilityPack.HtmlDocument
Dim node As HtmlAgilityPack.HtmlNode
page.LoadHtml(fileContents)
node = page.DocumentNode.SelectSingleNode("/html/body/form/div[6]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td[2]")

Очень признателен.

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

Firebug может быть исправлен сломанными тегами html. Если вы хотите выбрать узел Html, рекомендуется использовать класс или id. Например:

//div[@class='content']//table//tr[1]/td[2]

сократите путь и используйте селектор классов или идентификаторов.

если таблица имеет свой собственный идентификатор, вы можете использовать:

//table[@id='tableid']/tr[1]/td[2]

попробуйте, вы найдете XPATH интересным.



Related

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