Извлечь значение атрибута html-элемента с помощью html-пакета agility - PullRequest
0 голосов
/ 27 февраля 2019

Мне нужно получить маркер защиты от подделки форм на html-страницеДля этого я использую Html Agility Pack , но я довольно новичок в этом.

Это мой код:

var page = new HtmlDocument();

page.LoadHtml(htmlPage);

var tokenNode = page.DocumentNode.SelectSingleNode("/html/body/div[3]/div[2]/form/input").Attributes["value"].Value;

The 'Переменная tokenNode 'возвращает ноль.

Мне удалось отследить мою проблему до этого метода:

page.DocumentNode.SelectSingleNode("/html/body/div[3]/div[2]/form/input");

Если я просто использую page.DocumentNode.SelectSingleNode("/html/body/div[3]);, он возвращает значение.Однако, когда я добавляю второй div к своему xpath, он начинает возвращать ноль.

Что мне здесь не хватает?

Редактировать: Получил xpath с помощью инструментов разработчика Chrome.

Edit2: После всех проблем с Xpath я получил из Chrome.TL; DR HTML-код в brwoser отличался от того, который получил мой http-запрос, поэтому xpath был неправильным.

Вот более подробное объяснение

1 Ответ

0 голосов
/ 27 февраля 2019

Чтобы получить токен защиты от подделки со страницы, вы можете просто вызвать метод GetElementById, передав id

Например,

var page = new HtmlDocument();
page.LoadHtml(htmlPage);
string token = page.GetElementbyId("__RequestVerificationToken").GetAttributeValue("value", "");;

Вам не нужно идти по вложенному пути

...