我要对游戏网站进行屏幕抓取以获取一些数据。我希望能够发送多个请求,这样我就可以一次抓取多个页面。我已经给站点管理员发了电子邮件,并获得了以适中的速度(每秒几个请求)进行抓取的许可。
据我所知,BackgroundWorker 使用我认为理想的线程池。
对于这个用例使用 BackgroundWorker 或使用实际线程是否有意义?
最佳答案
还有另一种构造称为 ThreadPool .它可能值得使用它,因为它将为您管理多个线程,并且您可以控制线程的最小/最大数量。 BackgroundWorker仅限一个线程,最适用于具有后台 I/O 且不想锁定用户界面线程的 WinForms 应用程序。
你会想要保留一个页面队列来抓取并将它们提供给线程池。您可能仍想暂停或限制线程以获得预期的抓取级别。我个人会将检索到的页面内容的解析与通过 HTTP 对页面的实际检索分开。这通常会使事情更容易维护,并且您可能不需要本地处理是多线程的。
关于c# - 当我需要抓取网站时,我应该使用 BackgroundWorker 还是 Threads?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1397206/