我想将文件的文本结果保存在文件中。这是我目前的代码:
require "rubygems"
require "open-uri"
require "nokogiri"
class Scrapper
attr_accessor :html, :single
def initialize(url)
download = open(url)
@page = Nokogiri::HTML(download)
@html = @page.xpath('//div[@class = "quoteText"andfollowing-sibling::div[1][@class = "quoteFooter" and .//a[@href and normalize-space() = "hard-work"]]]')
end
def get_quotes
@quotes_array = @html.collect {|node| node.text.strip}
@single = @quotes_array.each do |quote|
quote.gsub(/\s{2,}/, " ")
end
end
end
我知道我可以写一个这样的文件:
File.open('text.txt', 'w') do |fo|
fo.write(content)
但是我不知道如何合并@single来保存我的结果。最终目标是将信息插入数据库。
我遇到过一些使用Yaml的人,但我发现很难按照步骤指导。
有人能指出我正确的方向吗?
谢谢。
答案 0 :(得分:1)
只需使用:
@single = @quotes_array.map do |quote|
quote.squeeze(' ')
end
File.open('text.txt', 'w') do |fo|
fo.puts @single
end
或者:
File.open('text.txt', 'w') do |fo|
fo.puts @quotes_array.map{ |q| q.squeeze(' ') }
end
并且不打扰创建@single
。
或者:
File.open('text.txt', 'w') do |fo|
fo.puts @html.collect { |node| node.text.strip.squeeze(' ') }
end
并且不用费心去创建@single
或@quotes_array
。
squeeze
是String类的一部分。这来自the documentation:
" now is the".squeeze(" ") #=> " now is the"