質問: 私はこのページからKBのURLを掻き取ろうとしています: https ://support.microsoft.com/en-us/kb/894199 このページには、次のようなURLがあります。https : //support.microsoft.com/kb/2976978 Chromeでデベロッパーツールを開くと、次のようなデータが表示されます。 ``` https://support.microsoft.com/kb/2976978 ``` 今、上記の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レスポンスに含まれていない場合のページ上の変更を意味します。私はこれについて行く方法は、Webブラウザの要求のようにふりをする、javascriptとajaxを完全に実行させ、 ここでアドバイスされたようにコンテンツを取得させることだと思います 。お役に立てれば!