[英]Crawling Multiple Urls at one Go using Task parallel Library
我想使用多个 URL 抓取数据并将数据存储在 SQLite 中,我应该使用 Parallel. 为每个循环调用或并行也爬行 URL 并获取数据。 我对如何执行项目的这一部分感到困惑。 我也在为如何开始我的项目的这一部分而苦苦挣扎,该部分实际上是在网站上抓取来自不同语言的文章
TPL(任务并行库)与 async/await 的问题是,你的任务是 CPU 绑定(并行计算多个事物)还是 I/O 绑定(与多个文件或网络请求交互)。
由于您喜欢抓取多个 URL,您的作业是 I/O 绑定的,这使它成为 async/await 的一个很好的候选者。 因此,您可以并行请求列表的全部(或子集)。 一些示例代码看起来像这样:
public async Task<IReadOnlyList<string>> GetContent(IEnumerable<string> urls)
{
var tasks = urls.Select(GetContent);
return await Task.WhenAll(tasks);
}
private async Task<string> GetContent(string url)
{
var content = await httpClient.GetStringAsync(url);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.