¿Cómo obtener las URL en la página con HTMLAgilityPack, cuando la Fuente no contiene las URL?

c# html html-agility-pack

Pregunta

Estoy intentando eliminar las URL de KB de esta página: https://support.microsoft.com/en-us/kb/894199

En la página, hay direcciones URL como: https://support.microsoft.com/kb/2976978

Si abres las herramientas para desarrolladores en Chrome, muestra que los datos están contenidos así:

<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>

Ahora, basado en el HTML anterior, creo que debería poder raspar las URL del elemento href de esta manera:

<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>

Sin embargo, el problema que estoy encontrando es que cuando descargo el HTMLSource, el contenido cambia. Lo que quiero decir es que a pesar de que las Herramientas del desarrollador muestran el HTML anterior disponible en la página, si hace clic derecho en la página y elige Ver fuente, el HTML que se muestra en ese punto es totalmente diferente y no contiene ninguna de las URL. que muestra la página renderizada.

Mi teoría es que hay algún tipo de referencia de archivo donde el HTML carga un archivo en algún lugar y el archivo contiene los detalles de la página que se representa. Entonces, ¿cómo puedo usar HTMLAgilityPack para obtener las URL que se encuentran en la página renderizada, ya que la fuente no parece contenerlas?

Además, me doy cuenta de que mi pregunta Título puede ser realmente confuso. Si hay un término técnico para lo que hace esta página / cómo funciona, hágamelo saber y puedo actualizar el título para que sea más lógico y otros puedan buscarlo en el futuro.

Respuesta popular

Está bien, veo el problema ahora. Esta página está utilizando las directivas y los enlaces de Angularjs, y los hrefs están cargando la carga posterior a la página. La página que estamos recibiendo está antes de que haya ocurrido cualquier análisis / ejecución a partir del agente del navegador web. Esto significa que los cambios en la página después de cualquier modificación de Manupulation / javascript o ajax de DOM no se incluirán en la respuesta HtmlDocument. Creo que la forma de hacerlo sería simular una solicitud de navegador web, dejar que el javascript y ajax se ejecuten completamente y obtener el contenido como se recomienda aquí . ¡Espero que esto ayude!




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué