CefSharpメモ


C#でJavascript込でスクレイピングするためにCefSharpを使ってみる。
その過程でわかったことなどを書き溜めてみる。

・指定したURLを開いて、読み込んだhtmlを確認する。

//using System.Threading;
//using CefSharp;
//using CefSharp.OffScreen;

string sTopPage = "https://www.google.co.jp/";
var browser = new ChromiumWebBrowser(sTopPage);
Thread.Sleep(4000);  //ページを読み込み、Javascriptを実行するのを待つ
browser.ViewSource(); //読み込まれたhtmlをファイルに書き出し、メモ帳で開いて見せてくれる

・htmlを読み、Javascriptを読んで実行されるまで待つ

browser = new ChromiumWebBrowser(sPageURL);
browser.LoadingStateChanged += BrowserLoadingStateChanged;

----
private static void BrowserLoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
{
  if (e.IsLoading)
  {
    //読込中。待つだけならここですることはない。
    //if(!e.IsLoading)にして、このブロックはなくしてもいいはず
  } else {
    //読み込みが終わったあとの処理
  }
}

・Anchorをクリックし、次のページへ遷移する

private enum States { TopPage, Menu01Page, Menu02Page };
private States state = States.TopPage;

var ClickAnchorScript = @"document.querySelector('li.menu01 a').click()"; //<li class=menu01><a href="..."></li>のaタグをクリック。コンテンツへの操作はJavascriptで。
browser.EvaluateScriptAsync(ClicAnchorScript).ContinueWith(u =>
{
    state = States.Menu01Page;  //遷移が成功したかどうか要確認。今は手抜き
});
 

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。