如何使用 Nokogiri 对元素进行换行



我需要什么

执行Nokogiri查询,添加换行符,以便在输出数据时不会将其捆绑起来。

data = doc.css('div#specifications div#spec-area ul.product-spec')[0].text 

我试过这个

data = doc.css('div#specifications div#spec-area ul.product-spec')[0].css('li').each{ |li| li.replace 'n' }.text 

我的完整代码

require 'Nokogiri'
require 'open-uri'
require 'spreadsheet'
doc = Nokogiri::HTML(open("http://www.asus.com/Notebooks_Ultrabooks/ASUS_TAICHI_21/#specifications"))
#Grab our product specifications - we only need the text not HTML
data = doc.css('div#specifications div#spec-area ul.product-spec')[0].text 
#Create the Spreadsheet
Spreadsheet.client_encoding = 'UTF-8'
book = Spreadsheet::Workbook.new
sheet1 = book.create_worksheet
sheet1.name = 'My First Worksheet'
#Output our data  to the Spreadsheet
sheet1[0,0] = data
book.write 'C:/Users/Barry/Desktop/output.xls'
您不想

替换列表元素,只想将它们映射到其文本,然后用换行符将它们连接在一起。

如果你用这个抓住元素:

data = doc.css('div#specifications div#spec-area ul.product-spec li')

然后,您可以使用mapjoin获取由换行符分隔的所有列表元素的列表,如下所示:

lines = data.map(&:text).join("n")

(来自评论)我以前从未使用过 ruby 电子表格,但这应该允许您输入数据:

data = doc.css('div#specifications div#spec-area ul.product-spec li')
data.each_with_index { |line, i| sheet1[i,0] = line.text }

希望有帮助。

附言:require "nokogiri"中的"Nokogiri"应该全部小写。

在每个 li 后添加一个换行符:

ul = doc.at('div#specifications div#spec-area ul.product-spec')
ul.search('li').each{|li| li.after "n"}
puts ul.text

相关内容

  • 没有找到相关文章

最新更新