Webサイトからデータをスクラップするバッチプログラムを作成しています。スクラップ中にプログラム全体ではなくWebBrowserインスタンスをスリープします。
private async void buttonInfoJobs_Click(object sender, EventArgs e)
{
const string C_UrlTemplate= "https://www.mysite.it/{0}";
var _searches = new List<Get_SiteSearchResult>();
using (JobsDataContext db = new JobsDataContext())
{
_searches = db.Get_SiteSearch("JOBS").ToList();
foreach (var s in _searches)
{
WebBrowserJobs wb1 = new WebBrowserJobs();
Uri uri = new Uri(String.Format(C_UrlTemplate,s.SkillTech));
wb1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowserJobs_DocumentCompleted);
wb1.Navigating += new WebBrowserNavigatingEventHandler(webBrowserJobs_Navigating);
wb1.Url = uri;
}
}
}
問題は、私がスクラップに持っているウェブサイトは、ページにJavascriptを実施して、ページを取得することで、ウェブブラウザがリロードされる異なる時間:
この
はコードです。これは完璧に動作し、私は、URLだけを求めるならば、はイベントをDocumentCompleted 6回を解雇されたが、最終的に私はコンテンツが必要ます。
私はループ内で別のURLを尋ねなければならないときに問題が発生します。ウェブサイトにはcaptcha検証が必要です。
私は推敲中にX秒の遅延を実装することにより、これを避けることができますが、私はあったかと分からない:
私はSystem.Threading.Thread.Sleep(5000)を入れた場合は、すべての実行があります私はウェブブラウザの1つのタスクだけを遅らせたいと思っています...
どうすればいいですか?
これは既に 'async'なので、なぜ' await Task.Delay(1000); '? – Equalsk
これは私を大いに助けましたが、私はWebBrowserインスタンスだけを遅らせたいと思っています... – DarioN1
WebBrowserインスタンスを遅らせることが何を意味するのか分かりません。 WebBrowserに何かをさせたくない場合は、何かをするように指示したり、何かを指示する前に待ってください。 – Equalsk