【发布时间】:2017-09-26 10:14:21
【问题描述】:
我正在编写一个 C# 网络爬虫,当我运行分析时,我可以看到 HTMLAgilityPack's LoadHTML 方法正在使用 10% 的程序整体 CPU 使用率。我想尝试降低这个。
我确信正则表达式会更快,但是当我查看 SO 上的链接提取示例时,我看到每个人都说应该避免这种方法,而应该使用像 HTMLAgilityPack 这样的 html 解析器。
我需要做的就是从 HTML 中提取链接是使用 HTMLAgilityPack 来杀死吗?
支持 HTML 解析器的原因是否适用于我的案例,因为我只使用它来提取链接?
然后将下载的 HTML 与 WebClient 进行比较。
使用href\\s*=\\s*(?:[\"'](?<1>[^\"']*)[\"']|(?<1>\\S+))(然后修剪并添加到列表中)比 HTMLAgilityPack 快得多。
43 毫秒,而 3 毫秒。
在pastebin上查看我的代码
【问题讨论】:
-
HtmlAgilityPack还是比使用RE好 -
如果是提取URL,正则表达式就可以了。
-
你至少应该展示你是如何提取链接的
-
@Adeel 你能详细说明为什么吗?如果可能的话,特别针对这种情况:-)
-
为了使您的模式更简单,请使用十六进制代码
\x22表示",使用\x27 表示单引号'。这避免了为 C# 编译器转义模式的麻烦。
标签: c# regex html-parsing html-agility-pack