簡體   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