繁体   English   中英

使用任务并行库在一个 Go 抓取多个 Urls

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM