c# - 从 html 文档中提取 html 片段

标签 c# html vb.net text

我正在寻找一种从 html 文档中提取 html“片段”的有效方法。我的first implementation其中使用了 Html Agility Pack。这似乎是解决这个问题的合理方法,直到我开始在大型 html 文档上运行提取 - 对于如此微不足道的事情,性能非常差(我猜是因为解析整个文档所花费的时间).

谁能建议一种更有效的方法来实现我的目标?

总结:

  1. 为了我的目的,一个 html“片段” 被定义为里面的所有内容 <body> html的标签 文档

  2. 理想情况下,我想返回 如果没有,内容不变 包含 <html><body> (我假设我收到了一个 html 片段开头)

  3. 我在内存中提供了整个 html 文档(作为字符串),我不会按需流式传输它 - 因此潜在的解决方案无需担心这一点。

  4. 性能至关重要,因此潜在的解决方案应考虑到这一点。

示例输入:

<html>
   <head>
     <title>blah</title>
   </head>
   <body>
    <p>My content</p>
   </body>
</html>

期望的输出:

<p>My content</p>

欢迎使用 C# 或 VB.NET 解决方案。

最佳答案

大多数 html 不会与 XHTML 兼容。我会执行 HTTP get 请求并在结果文本中搜索 .Contains("<body>").Contains("</body>") .您可以将这两个位置用作读者流的开始和停止索引。在 body 标签之外,您真的不需要担心 XML 合规性问题。

关于c# - 从 html 文档中提取 html 片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4388475/

相关文章:

c# - 如何设置自动递增属性的初始值(DatabaseGeneratedOption.Identity)

c# - 将盐与散列密码一起存储有多安全

javascript - 使用 IndexedDB 游标进行分页

php - 需要一些帮助来实现这个功能

vb.net - 获取目录中的所有文件夹和子文件夹

c# - Razor View 中不包含 'AsEnumerable' 和 'cannot convert from methodgroup' 的定义

c# - 从网络下载之前获取图像文件的大小

javascript - 每次点击时更改 Div 类

.net - Visual Studio Launch 2010 时间的最佳利用

c# - 禁用asp.net中div内的所有控件