【发布时间】:2019-08-22 16:25:35
【问题描述】:
我正在使用 C# Web 浏览器从网站上抓取数据。问题是获取大约 250 条记录大约需要 20 分钟。
我以编程方式做的是
1- 在下拉列表中获取所有年份。
2- 每年我都会进行一次搜索。并从表中抓取数据。
3- 行的第一个单元格是链接(详细信息),其余单元格具有基本信息。所以我要做的是获取基本信息,在新浏览器中打开详细信息链接并获取详细信息。
4- 循环执行第 3 步。
我对程序进行了性能测试,发现等待文档加载需要很长时间。如果我跳过从详细信息页面抓取数据,则需要 1.5 分钟才能抓取所有数据。在开始scraping之前,我使用以下方法等待文档完成。
public async Task WaitPageLoad(int timeOut)
{
var pageLoaded = new TaskCompletionSource<bool>();
var timeElapsed = 0;
DocumentCompleted += (s, e) =>
{
if (ReadyState != WebBrowserReadyState.Complete) return;
if (pageLoaded.Task.IsCompleted) return; pageLoaded.SetResult(true);
};
while (pageLoaded.Task.Status != TaskStatus.RanToCompletion)
{
await Task.Delay(10);
timeElapsed++;
if (timeElapsed >= timeOut * 100) pageLoaded.TrySetResult(true);
}
}
所以我想知道是否有任何方法可以让浏览器只加载 html 而不是图像或其他东西。
非常感谢任何帮助!
【问题讨论】:
-
您要抓取哪个网站?该站点将确定许多 c# web 抓取工具中哪个是最好的。 Web 浏览器控件可能不是您的最佳选择。
标签: c# winforms webbrowser-control