在Scraping时睡眠WebBrowser实例而不是整个程序

时间:2017-12-12 15:05:36

标签: c# .net web-scraping

我正在编写一个从网站上删除数据的批处理程序。

这是代码:

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并获取页面,webbrowser会重新加载不同的时间。

如果我要求提供一个Url, DocumentCompleted 事件被触发六次,但最后我获得了所需的内容,这非常有效。

当我不得不在循环中询问不同的网址时,问题出现了:网站需要验证码验证。

我可以通过在详细说明中实施X秒的延迟来避免这种情况,但我不知道如何以及:

如果我输入System.Threading.Thread.Sleep(5000),所有执行都是停止但我想只延迟webbrowser的单个任务......

我该怎么办?

1 个答案:

答案 0 :(得分:1)

我可能也回答了你关于WebScraper的最后一个问题,所以我会再次帮助你;)

您已在函数定义中使用async关键字,因此您只需使用以下代码:

await Task.Delay(5000);