相关疑难解决方法(0)

抓取时如何避免连接节点中的所有文本

当我从 HTML 或 XML 中抓取多个相关节点来提取文本时,所有文本都会连接成一个长字符串,从而无法恢复单个文本字符串。

例如:

require 'nokogiri'

doc = Nokogiri::HTML(<<EOT)
<html>
  <body>
    <p>foo</p>
    <p>bar</p>
    <p>baz</p>
  </body>
</html>
EOT

doc.search('p').text # => "foobarbaz"
Run Code Online (Sandbox Code Playgroud)

但我想要的是:

["foo", "bar", "baz"]
Run Code Online (Sandbox Code Playgroud)

抓取 XML 时也会发生同样的情况:

doc = Nokogiri::XML(<<EOT)
<root>
  <block>
    <entries>foo</entries>
    <entries>bar</entries>
    <entries>baz</entries>
  </block>
</root>
EOT

doc.search('entries').text # => "foobarbaz"
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况以及如何避免这种情况?

html ruby xml parsing nokogiri

2
推荐指数
1
解决办法
572
查看次数

标签 统计

html ×1

nokogiri ×1

parsing ×1

ruby ×1

xml ×1