【问题标题】:Speeding up CsQuery selectors by using html substring使用 html 子字符串加速 CsQuery 选择器
【发布时间】:2013-03-04 21:55:58
【问题描述】:

我想解析一些复杂/繁重的 HTML 页面。我最近阅读了有关 CsQuery 并检查了 CsQuery Vs Html Agility Pack and Fizzler 的性能比较。根据这些测试,由于创建了索引,CsQuery 在创建 DOM 时变慢了。

假设我想选择一个沉重的 html 页面的某个元素(没有 id),并且我知道它的祖先的 ID,我将使用它作为上下文元素。如果我将这个沉重的 html 加载到 DOM 中,它会很慢,因此我的选择会很慢。但是,如果我能以某种方式快速预处理 html 并获取包含上下文元素(我知道的 ID)的子字符串并将其加载到 DOM 中,它会更快。在那种情况下,我会摆脱许多不需要的 HTML,不会为其创建索引器。因此,我的选择会更快。

我使用 CsQuery 是因为我想要类似 JQuery 的东西。

我的问题是:

给定一个 HTML 文档字符串:是否有一种快速方法(例如:线性)来获取给定其 id 的 HTML 元素的 HTML 子字符串?

【问题讨论】:

  • 您能否让我的建议发挥作用?

标签: html html-parsing web-scraping html-parser csquery


【解决方案1】:

首先让我说,我认为您使用 CsQuery 做出了正确的选择,我不久前从 HAP 切换到它,我对切换感到非常满意。 最新的 CsQuery 预发布版可让您完全关闭索引,或仅对代码进行部分索引。

来自问题跟踪器。

在当前的预发布代码中,您可以使用另一种索引策略,它可以大大加快 DOM 的构建速度,但代价是复杂的查询。 (实际上有两种新策略,如果你真的想的话,你可以完全关闭索引 :) 这对于你正在处理的场景可能会更好。

如果您愿意从其 git-hub 存储库下载代码并编译它,使用预发布版您将能够做到这一点。

DomIndexProviders 类包含 3 个选项,RangedDomIndexProvider 索引很多选择器,非常聪明的SimpleDomIndexProvider 允许基本索引和NoDomIndexProvider 根本不做索引。 SimpleDomIndexProvider 非常简单,可能适用于您的情况,您也可以考虑使用no indexing

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 2023-03-24
  • 2019-04-13
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多