我想解析一些复杂/繁重的 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 子字符串?
最佳答案
首先让我说,我认为您对 CsQuery 做出了正确的选择,我不久前从 HAP 切换到了它,我对这一切换感到非常高兴。 最新预发布的 CsQuery 允许您完全关闭索引,或仅对代码进行部分索引。
来自问题跟踪器。
In the current prerelease code there's an alternate indexing strategy you can use which speeds up DOM construction quite a bit, at the expense of complex queries. (Actually there's two new strategies, you can turn the index off altogether if you really want to :) This may be better for the kind of scenarios you're dealing with.
如果您愿意从其 git-hub 下载代码存储库并编译它,使用预发行版您就可以做到这一点。
DomIndexProviders类包含 3 个选项,RangedDomIndexProvider
为很多选择器建立索引,并且非常聪明 SimpleDomIndexProvider
允许基本索引,NoDomIndexProvider
不进行索引全部。 SimpleDomIndexProvider
非常简单,可能适合您的情况,您也可以考虑 no indexing .
关于html - 使用 html 子字符串加速 CsQuery 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15445049/