Ruby nokogiri:如何围绕给定的xpath元素包装html标记?

Ruby nokogiri:如何围绕给定的xpath元素包装html标记?,ruby,nokogiri,Ruby,Nokogiri,我有一个xpath来抓取没有任何html标记包围的每个文本节点。相反,它们通过分开。我想用标签包装这些 Nokogiri::HTML(open("http://vancouver.en.craigslist.ca/van/swp/1426164969.html")) .xpath("//br/following-sibling::text()|//br/preceding-sibling::text()").to_a 将返回这些文本节点 完成以下修订代码: doc = Nokogiri::HT

我有一个xpath来抓取没有任何html标记包围的每个文本节点。相反,它们通过

分开。我想用
标签包装这些

Nokogiri::HTML(open("http://vancouver.en.craigslist.ca/van/swp/1426164969.html"))
.xpath("//br/following-sibling::text()|//br/preceding-sibling::text()").to_a
将返回这些文本节点

完成以下修订代码:

doc = Nokogiri::HTML(open("http://vancouver.en.craigslist.ca/van/swp/1426164969.html"))
.xpath("//br/following-sibling::text()|//br/preceding-sibling::text()").wrap("<span></span>")
puts doc

您的文档变量未分配给整个文档-您应该使用

doc = Nokogiri::HTML(open("http://vancouver.en.craigslist.ca/van/swp/1426164969.html"))
doc.xpath("//br/following-sibling::text()|//br/preceding-sibling::text()").wrap("<span></span>")
puts doc
doc=Nokogiri::HTML(打开http://vancouver.en.craigslist.ca/van/swp/1426164969.html"))
doc.xpath(“//br/后面的同级::text()|//br/前面的同级::text()”).wrap(“”)
放博士
不幸的是,这并不能解决问题,因为nokogiri将所有brs放在第一位,而不是所有跨距,文本如下:

<br><br><br><br><span>
text</span><span>
text</span><span>
text</span><span>
text</span>




文本 文本 文本 文本
但你可以这样做

doc = Nokogiri::HTML(open("http://vancouver.en.craigslist.ca/van/swp/1426164969.html"))
doc.search("//br/following-sibling::text()|//br/preceding-sibling::text()").each do |node|
  node.replace(Nokogiri.make("<span>#{node.to_html}</span>"))
end
puts doc
doc=Nokogiri::HTML(打开http://vancouver.en.craigslist.ca/van/swp/1426164969.html"))
doc.search(“//br/后面的同级::text()|//br/前面的同级::text()”)。每个do节点|
node.replace(Nokogiri.make(“#{node.to_html}”))
结束
放博士
doc = Nokogiri::HTML(open("http://vancouver.en.craigslist.ca/van/swp/1426164969.html"))
doc.search("//br/following-sibling::text()|//br/preceding-sibling::text()").each do |node|
  node.replace(Nokogiri.make("<span>#{node.to_html}</span>"))
end
puts doc