Webサイトからいくつかの情報を抽出しようとしています。しかし、そこに移動すると、phpページを動的にロードする前に、javascriptを使用してサーバーに接続します。開発者ツールを使用して、Chrome でシーケンスをたどることができます。Webbrowser コントロールを使用して C# で再現し、単に Web サイトに移動するのが最も簡単だと考えました。次に、webbrowser コントロールには、すべての javascript ファイル、動的にロードされた php ページからのテキストなどを含める必要があります。しかし、これは本当で、コントロールのどこに保存されているのでしょうか? 私はそれらを見つけることができないようです。
1 に答える
0
Chrome に実装されているシーケンス図全体を再作成するのは大変な作業です。しかし、「Webサイトから情報を抽出する」というのは、割と簡単にできることです。
免責事項:この質問はWPFのWebBrower
コントロールに関するものだと思いました(WinFormsでもほぼ同じです)
HTMLDocument
ページが読み込まれたら、次を使用して取得できます。
using mshtml; // <- don't forget to add the reference
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
browser.Navigate("http://google.com/");
browser.LoadCompleted += browser_LoadCompleted;
}
void browser_LoadCompleted(object sender, NavigationEventArgs e)
{
HTMLDocument doc = (HTMLDocument)browser.Document;
string html = doc.documentElement.innerHTML.ToString();
// from here, you should be able to parse the HTML
// or sniff the HTMLDocument (using HTML Agility Pack for instance)
}
}
この からHTMLDocument
、HTML 要素、CSS スタイル、スクリプトなど、多くのプロパティにアクセスできます。ブレークポイントを設定して、ニーズに最適なものを確認してください。
ただし、読み込みたいページは JavaScript を使用してコンテンツを埋めているため、が発生HTMLDocument
した時点で が完了しない可能性がありますLoadCompleted
。
その場合、コンテンツが安定するまでタイマーを使用してポーリングすることをお勧めします。
を使用HTMLDocument
して独自の JavaScript コードを挿入し、 を介して C# メソッドを呼び出すこともできますWebBrowser.ObjectForScripting
が、これははるかに複雑で維持が難しくなります。
于 2013-10-13T09:27:53.780 に答える