Как получить URL-адреса на странице с помощью HTMLAgilityPack, когда источник не содержит URL-адреса?

c# html html-agility-pack

Вопрос

Я пытаюсь очистить KB Urls с этой страницы: https://support.microsoft.com/en-us/kb/894199

На странице есть URL-адреса, такие как: https://support.microsoft.com/kb/2976978

Если вы откроете инструменты разработчика в Chrome, это покажет, что данные содержатся следующим образом:

<div class="indent">
<a id="kb-link-142" href="https://support.microsoft.com/kb/2976978" target="_self">https://support.microsoft.com/kb/2976978</a>
</div>

Теперь, основываясь на приведенном выше HTML, я считаю, что мне нужно очистить URL-адреса от элемента href следующим образом:

foreach(HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
   list.Add(link.GetAttributeValue("href", string.Empty));
}

Проблема, с которой я сталкиваюсь, заключается в том, что при загрузке HTMLSource содержимое изменяется. Я имею в виду, что, несмотря на то, что инструменты разработчика показывают вышеуказанный HTML, доступный на странице, если вы щелкните правой кнопкой мыши на странице и выберите «Просмотр источника», то HTML-код, который он показывает в этот момент, совершенно другой и не содержит ни одного из URL-адресов отображается отображаемая страница.

Моя теория заключается в том, что есть какая-то ссылка на файл, где HTML загружает файл где-то, а файл содержит сведения о отображаемой странице. Итак, как я могу использовать HTMLAgilityPack для получения URL-адресов, которые находятся на отображаемой странице, поскольку источник, похоже, не содержит их?

Также - я понимаю, что мой вопрос Название может быть действительно запутанным. Если есть технический термин для того, что делает эта страница / как она работает, сообщите мне, и я могу обновить заголовок, чтобы он был более логичным, а другие могут искать его в будущем.

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

Хорошо, я вижу проблему сейчас. Эта страница использует директивы и привязки Angularjs, а hrefs загружают загрузку страницы. Страница, которую мы получаем, до того, как какой-либо синтаксический анализ / выполнение произошло, как из агента веб-браузера. Это означает, что изменения на странице после изменения мануфактуры DOM / javascript или ajax не будут включены в ответ HtmlDocument. Я думаю, что путь для этого будет заключаться в том, чтобы притворяться как запрос веб-браузера, позволить javascript и ajax полностью выполнять и получать контент, как это описано здесь . Надеюсь это поможет!




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему