仅html格式保,将HTML转换为纯文本并保持结构/格式,使用ruby

本文介绍了如何避免使用正则表达式处理HTML,推荐使用Nokogiri库解析并提取文本内容。通过示例展示了如何获取文本节点,以及如何清理HTML以获得更接近浏览器显示的输出。还提及了捕获浏览器输出的方法,如lynx,用于处理不标准的元关键字提取问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,不要尝试为此使用正则表达式。这个可能性非常好,你会想出一个脆弱/脆弱的解决方案,它会随着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也有作为教程之一。

如果你确实想做的对,你需要弄清楚你想要为

标签做什么以及
  1. 标签以及表格。

另一种攻击方法是捕获文本浏览器之一的输出,如lynx。几年前,我需要对不使用Meta-Keyword标签的网站上的关键字进行文本处理,并发现了一种文本浏览器,可以让我以这种方式获取呈现的输出。我没有可用的源代码,所以我无法查看它是哪一个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值