我正在编写一个从网站上删除数据的批处理程序。
这是代码:
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的单个任务......
我该怎么办?
答案 0 :(得分:1)
我可能也回答了你关于WebScraper的最后一个问题,所以我会再次帮助你;)
您已在函数定义中使用async
关键字,因此您只需使用以下代码:
await Task.Delay(5000);