我想将抓取的文本结果保存在文件中。这是我当前的代码:
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 的人,但我发现很难遵循分步指南。
谁能指出我正确的方向?
谢谢。
只需使用:
@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 类的一部分。这是来自文档:
" now is the".squeeze(" ") #=> " now is the"