當Source不包含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,我相信我應該能夠像這樣從href元素中刪除URL:

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

我遇到的問題是,當我下載HTMLSource時,內容會發生變化。我的意思是,即使開發人員工具在頁面上顯示上述HTML,如果您右鍵單擊該頁面並選擇查看源,那麼它在那時顯示的HTML完全不同,並且不包含任何URL呈現的頁面顯示。

我的理論是,有某種文件引用,HTML在某處加載文件,文件包含呈現頁面的詳細信息。那麼我如何使用HTMLAgilityPack來獲取渲染頁面上的URL,因為源似乎不包含它們?

另外 - 我意識到我的問題標題可能真的令人困惑。如果這個頁面正在做什麼/它是如何工作的技術術語,請告訴我,我可以更新標題,使其更符合邏輯,其他人可以在將來搜索它。

熱門答案

好的,我現在看到了問題。此頁面使用Angularjs指令和綁定,並且href正在加載帖子頁面加載。我們得到的頁面是在從Web瀏覽器代理程序發生任何解析/執行之前。這意味著在任何DOM manupulation / javascript或ajax修改之後頁面上的更改將不會包含在HtmlDocument響應中。我認為解決這個問題的方法是假裝像瀏覽器一樣請求,讓javascript和ajax完全執行並按照此處的建議獲取內容。希望這可以幫助!



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因