如何从HTML中提取有意义的文本

6
我想解析一个HTML页面并从中提取有意义的文本。 有人知道一些好的算法来做这件事吗? 我在Rails上开发我的应用程序,但我认为Ruby在这方面有点慢,所以如果存在一些好的C库来处理这个问题,那就更合适了。
谢谢!
注:请不要推荐任何Java相关内容
更新: 我找到了这个链接:link text 遗憾的是,它是用Python编写的。

1
要求文本具有“意义”使得这变成了一个更加困难的任务。 - Rob Kennedy
是的,但显然“统计学”方法是正确答案。 - Nisanio
也许学习一些Python怎么样? :-) - Prof. Falken
4个回答

6
使用Nokogiri,它快速且用C编写,适用于Ruby。
(使用正则表达式解析像HTML这样的递归表达式是极具挑战和容易出错的,我不会走这条路。我在答案中提到这个问题是因为这个问题似乎一次又一次地出现。)
使用像上面提到的Nokogiri这样的真正解析器,您还可以获得额外的好处,即HTML文档的结构和逻辑得以保留,有时您真的需要这些线索。

2

-1

Lynx 能够做到这一点。如果您想查看它,这是开源的。


但是启动一个单独的程序并不是我认为快速的方式。 - Prof. Falken
是的,你说得对。该网站将爬取多个页面并提取其文本。想法是将新闻文本与其他文本分开。它必须非常快速。 - Nisanio
我不建议直接使用Lynx。你可以从源代码中提取你感兴趣的部分,并将其编译为库。 - mouviciel

-3

你应该从文本中删除所有尖括号部分,然后折叠空格。

理论上,在其他情况下不应该有<>。页面中到处都是&lt;&gt;代替它们。

折叠空格:将所有TAB、换行符等转换为空格,然后将每个空格序列替换为单个空格。

更新:在找到<body>标签后开始。


我不建议使用正则表达式来解析HTML或类似格式的内容。(除非是一些非常简单的情况,但作为一般规则,请避免使用。) - Prof. Falken
4
正则表达式+HTML:https://dev59.com/questions/X3I-5IYBdhLWcg3wq6do#1732454 (该链接为英文原文,请在浏览器中打开) - Nick T
1st: @ Amigable Clark Kant:我们不是在谈论解析,而是在谈论剥离。一个正确的HTML可以用正则表达式进行剥离。如果我们在规范中有这个要求,那么我们就可以安全地使用它。2nd: 你们都误解了我的意思。我并没有推荐使用正则表达式。我只是表达了我的算法想法,并引用了“正则表达式”这个短语作为人类语言工具。我可以写任何东西。 - Notinlist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接