【发布时间】:2011-07-18 10:01:22
【问题描述】:
我有一些随机的 HTML 布局,其中包含我想提取的重要文本。我不能只是strip_tags(),因为这会在侧边栏/页脚/页眉/等中留下一堆额外的垃圾。
我找到了method built in Python,我想知道 PHP 中是否有类似的东西。
这个概念相当简单:使用 关于文本密度的信息 与 HTML 代码相比,如果一行 文本值得输出。 (这不是 一个新颖的想法,但它有效!) 流程如下:
- 解析 HTML 代码并跟踪处理的字节数。
- 按行或按段落存储文本输出。
- 与每个文本行相关联所需的 HTML 字节数 描述一下。
- 通过计算文本的比例来计算每行的文本密度 t> o 个字节。
- 然后使用神经网络确定该行是否是内容的一部分。
你可以得到很好的结果 通过检查线的密度是否为 高于固定阈值(或 平均),但系统使更少 如果你使用机器学习会出错 - 更不用说它更容易 实施!
更新:我开始悬赏一个可以从随机 HTML 模板中提取主要内容的答案。由于我无法共享我将使用的文档 - 只需选择任何随机博客站点并尝试从布局中提取正文。请记住,页眉、侧边栏和页脚也可能包含文本。有关想法,请参阅上面的链接。
【问题讨论】:
-
您所说的“提取”是什么意思 - 使用完整的 HTML(如
<b><i><a>)提取,还是仅提取文本? -
我不会重新实现这个。要么直接使用python模块
$text = exec("python -m ..."),要么使用在线服务boilerpipe-web.appspot.com -
@Pekka,我宁愿将标记元素(如代码块或对象嵌入)与文本一起使用——但纯文本也可以。 @mario - 谢谢!这看起来是一个好的开始——但我确实需要可以在本地运行的东西,如果可能的话,我宁愿不将 Java 添加到我的服务器应用程序中。
-
(related) Best Methods to parse HTML 使用标记。对于密度和东西,你必须找到一些额外的工具。
-
您可能正在寻找类似可读性算法的东西,请参阅此问题以获取更多信息和实现:stackoverflow.com/questions/1146934/…
标签: php regex dom text-parsing