繁体   English   中英

当我需要抓取网站时应该使用BackgroundWorker或Threads吗?

[英]Should I use BackgroundWorker or Threads when I need to scrape a website?

我将在屏幕上刮擦游戏网站上的一些数据。 我希望能够发送多个请求,以便可以一次对多个页面进行屏幕抓取。 我已通过电子邮件向站点管理员发送电子邮件,并获得了以中等速率(每秒几个请求)进行抓取的权限。

据我所知,BackgroundWorker使用的线程池是我所希望的。
在此用例中使用BackgroundWorker还是使用实际的线程有意义吗?

还有另一种称为ThreadPool的构造。 可能值得使用,因为它将为您管理多个线程,并且您可以控制线程的最小/最大数量。 BackgroundWorker仅限于一个线程,最适合用于具有后台I / O并且不想锁定用户界面线程的WinForms应用程序。

您将需要保留要刮擦的页面队列,并将其馈送到线程池。 您可能仍想暂停或限制线程以达到预期的刮取级别。 我个人将通过HTTP对页面内容的解析与实际页面的解析分开。 通常,这将使事情更易于维护,并且您可能不需要本地处理是多线程的。

BackgroundWorker典型用法是使UI保持响应状态。 而是使用线程池将多个http请求/响应排队。

请参阅ThreadPool.QueueUserWorkItem

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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