2

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--;
        }
4

2 に答える 2