【问题标题】:c# .net4 - regex vs html agility packc# .net4 - 正则表达式 vs html 敏捷包
【发布时间】:2012-06-05 08:17:35
【问题描述】:

什么更快?我刚刚制作了一个使用 HTML Agility 包的网络爬虫,它消耗了大量内存。

使用内存分析器对其进行分析,我发现 HTMLDocument、HTMLNode 等实例占用了最多的内存。

我觉得使用正则表达式可能会更快更高效,我错了吗?

【问题讨论】:

  • 根据经验,你导入的越少,程序越快;你导入的越多,程序员的速度就越快。当然,正则表达式更便宜(除非他们在幕后使用正则表达式。)
  • 在 SO 上看到那个著名的问题:stackoverflow.com/questions/1732348/… 它应该会阻止您使用正则表达式来解析 HTML。

标签: c# regex memory html-agility-pack


【解决方案1】:

根据您的具体操作,确实可以使用正则表达式加快速度并释放一些内存。问题是 - 您从中提取数据的页面有多严格和格式良好。正则表达式更容易被您可能在野外遇到的完全有效但出乎意料的 HTML 构造所混淆。

【讨论】:

  • 而且,可能更少被在野外发现的完全无效的代码弄糊涂了。
  • @Eugene 我的想法完全正确。事实上,就在今天,正是出于这个原因,我才从 regex 切换到 Html Agility Pack。
【解决方案2】:

reg-ex 会比 html agilty pack 快很多。

但您应该记住,html 不一定总是格式正确的。仅使用 reg-ex 搜索您想要的正确数据可能会失败。浏览器对错误非常宽容。

敏捷包是一个很棒的工具。它为消耗的内存提供了很多功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2011-07-16
    • 2020-09-17
    • 2011-01-26
    • 1970-01-01
    相关资源
    最近更新 更多