2

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

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

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

我的问题是:

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

4

1 回答 1

2

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

来自问题跟踪器。

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

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

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

于 2013-03-16T03:01:31.687 回答