gpt4 book ai didi

ruby - 如何使用 Nokogiri 正确处理不间断空格?

转载 作者:数据小太阳 更新时间:2023-10-29 08:54:04 26 4
gpt4 key购买 nike

我正在使用 Nokogiri 解析 HTML 页面,但我遇到了不间断空格的奇怪问题。我尝试了不同的编码、替换空格以及其他一些令人头疼的尝试。

这是有问题的 HTML 片段:

<td>Amount 15,300&nbsp;at&nbsp;dollars</td>

注意在我使用 Nokogiri 后   表示的变化:

<td>Amount 15,300&#xa0;at&#xa0;dollars</td>

并输出inner_text:

Amount 15,300 at dollars

这是我的基础 Nokogiri 抓取,我确实尝试了一些替代方案来解决但惨败:

doc = Nokogiri::HTML(open(url))

然后我为有问题的项目执行 doc.search

请注意,如果我查看文档,该行会显示该行上的  

澄清:我认为我没有清楚地说明我遇到的困难。如果没有奇怪的 符号,我无法让 inner_text 显示出来。

最佳答案

除非你真的非常想保留 &nbsp; 符号,否则这里应该没有问题。

A0 是不间断空格的十六进制字符代码。因此, &#xa0; 打印一个不间断空格,并且完全等同于 &nbsp;&#160; 也做同样的事情。

Nokogiri 在这里所做的是读取文本节点、识别实体并在内部将它们转换为实际的字符串表示形式。然后,当将其转换回文本节点的 HTML 友好版本时,它通过其十六进制代码表示不间断空间,而不是承担在实体表中查找它的性能开销,因为无论如何它是等效的。

假设 Â 是您所看到的并且不仅仅是粘贴到 StackOverflow 的问题,这是一个文本编码问题:输出软件(浏览器?)不是 UTF-8 模式,所以不知道如何处理字符代码 A0 ,尽其所能。如果这是一个浏览器,在头部添加 <meta charset="utf-8"> 将解决这个问题,并使其余输出对 Unicode 更友好。

如果您真的非常想要 &nbsp; ,请在最终输出中使用 gsub 替换它们。否则,请不要担心。

关于ruby - 如何使用 Nokogiri 正确处理不间断空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5956195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com