C# で重い Web スクレイパーを作成しています。速くて信頼できるものにしたい。Parallel.Foreach と Parallel.For は、これには遅すぎます。入力には、URL のリストを使用しています。同時に最大 300 のスレッドを動作させたいと考えています (CPU とネット接続でこれを処理できます)。これを行う最良の方法は何ですか?これにはタスクを使用するとうまくいくでしょうか?明確な理由もなくスレッドが終了し、一部の結果が保存されないことがあります。これを行うためのより信頼できる方法が必要です。何か案は?より堅実なキュータイプのスクレイピングが必要です。私が思いついたもの(すべてのコードではなく重要な部分):
List <string> input = // read text file
int total = words.Length;
int maxThreads = 300;
while (true)
{
if (activeThreads < maxThreads)
{
current++;
Thread thread = new Thread(() => CrawlWebsite(words[current]));
thread.Start();
}
}
public static void CrawlWebsite(string word)
{
activeThreads++;
// scraping part
activeThreads--;
}