2011-02-01 25 views
3

我将如何去下载和执行(即评估Javascript,构建DOM)每分钟超过1000个XHTML文档?在浏览器环境中执行1000+页/分钟

一些轮廓/约束:

  • URL中下载在不同的服务器。
  • 我需要遍历 - 并理想地修改生成的DOM。
  • 对渲染图形不感兴趣。
  • 带宽不是问题。
  • 过度庞大的硬件并行化将成为更大的问题。
  • 生产环境是.NET。

我不关心下载页面。我估计实际删除页面是一个瓶颈。 .NET有一个内置的Web浏览器对象,但我不知道它是否会在单个机器上扩展。另外,.NET并不是一个绝对的需求,但它可以让这里的集成更容易。

我的任何意见/指针很感激有关:

  • 哪个浏览器API是最适合做这个?
  • 浏览器是正确的方式 - 也许有一个更轻量级的方式来执行Javascript是最重要的部分(但不提供DOM)?
  • 现有的产品/服务 - 无论是开源还是商业 - 都可能完成这项任务?
  • 大概每分钟有多少页面可以在单个机器上处理(每个人有3个Chrome渲染商业广告)?
  • 任何缺陷之一是可能遇到...

谢谢你在前进,

/大卫

+0

开始通过购买一个非常,非常大的电脑:-)如果你不这样做,在浏览器中,这将是真的很难保证页面正常工作;任何JavaScript代码*都很可能假定它可以执行正常的DOM操作。 – Pointy 2011-02-01 15:11:35

+0

哦,吞吐量肯定要取决于这些“页面”的指标和JavaScript代码的性质。 – Pointy 2011-02-01 15:14:10

回答

4

看无头的浏览器.NET的一个 - 他们会比快BrowserControl,因为它们不需要呈现图形视图。

我不知道这是否会允许您每分钟执行1000页,但应该比控件快得多。

Here是其中之一。

Here是关于使用HtmlUnit作为无头浏览器的博客文章。

an SO question关于无头浏览器。

0

我认为node.js可以做很多你想做的事情,如果你没有和.net解决方案结婚,它可以做得很快。它明确地有一个dom的实现。

1

我有一个在WinForms中实现的应用程序,它可以在大约5分钟内处理约7,800个URL(下载URL,解析内容,查找特定的数据片段,以及如果它找到了正在寻找的内容,该页面。

这个特定的应用程序过去需要26到30分钟才能运行,但是通过将代码更改为TPL(.NET v4.0中的任务并行库),它仅在5时执行。该计算机是Dell T7500工作站采用双核四Xeon处理器(3 GHz),运行24 GB内存,以及Windows 7 Ultimate 64位版本。

我只是在Parallel.ForEach()循环中使用WebClient,Stream和StreamReader对象,而且速度非常快。

可能不是您正在寻找的确切解决方案,但与大多数其他贴子不同,我在这里看到的这个真正的“处理1,000页/分钟”[和更多]。

深思...

相关问题