首先,不要尝试为此使用正则表达式。这个可能性非常好,你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而中断,否则将很难管理和维护。
你可以得到一部分的方式有很迅速地用引入nokogiri解析HTML和提取文本:
require 'nokogiri'
html = '
This is
some text.
This is some more text.
This is
preformatted
text.
'
doc = Nokogiri::HTML(html)
puts doc.text
>> This is
>> some text.
>> This is some more text.
>>
>> This is
>> preformatted
>> text.
这个作品被引入nokogiri将返回文本节点,它们基本上是围绕着空白的原因标签以及标签中包含的文字。如果您使用tidy进行HTML前期清理,您有时可以获得更好的输出结果。
问题是,当您将解析器的输出或查看HTML的任何方式与浏览器显示的内容进行比较时。浏览器关注的是尽可能以令人满意的方式呈现HTML,而忽略HTML可能畸形且破碎的事实。解析器的设计目的并非如此。
您可以在提取内容之前按摩HTML以删除多余的分行符,如"\n"和"\r",然后用换行符替换
标签。这里有很多问题解释如何用别的东西代替标签。我认为Nokogiri site也有作为教程之一。
如果你确实想做的对,你需要弄清楚你想要为
标签做什么以及- 和
- 标签以及表格。
另一种攻击方法是捕获文本浏览器之一的输出,如lynx。几年前,我需要对不使用Meta-Keyword标签的网站上的关键字进行文本处理,并发现了一种文本浏览器,可以让我以这种方式获取呈现的输出。我没有可用的源代码,所以我无法查看它是哪一个。
本文介绍了如何避免使用正则表达式处理HTML,推荐使用Nokogiri库解析并提取文本内容。通过示例展示了如何获取文本节点,以及如何清理HTML以获得更接近浏览器显示的输出。还提及了捕获浏览器输出的方法,如lynx,用于处理不标准的元关键字提取问题。

被折叠的 条评论
为什么被折叠?



