如何将解析的数据保存到文件中

时间:2014-05-14 09:51:18

标签: ruby file save nokogiri

我怎么能将解析后的数据保存到txt文件中。我的脚本只保存最后解析的。我需要添加.each吗?现在有点丢失

这是我的代码,如果有人可以向我解释如何在新行上保存已解析的信息

这是代码

require 'rubygems'
require 'nokogiri'
require 'open-uri'

url = "http://www.clearsearch.se/foretag/-/q_advokat/1/"
doc = Nokogiri::HTML(open(url))

doc.css(".gray-border-bottom").each do |item|
  title = item.css(".medium").text.strip
  phone = item.css(".grayborderwrapper > .bold").text.strip
  adress = item.css(".grayborder span").text.strip
  www = item.css(".click2www").map { |link| link['href'] }

  puts "#{title} ; \n"
  puts "#{phone} ; \n"
  puts "#{adress} ; \n"
  puts "#{www} ; \n\n\n"

  puts "Writing"
  company = "#{title}; #{phone}; #{adress}; #{www} \n\n"
  puts "saving"
  file = File.open("exporterad.txt", "w") 
  file.write(company)
  file.close
  puts "done"
end
puts "done"

1 个答案:

答案 0 :(得分:1)

在循环内调用File.open会在每次调用时将文件截断为零长度。而是在循环外打开文件(使用块形式):

File.open("exporterad.txt", "w") do |file|
  doc.css(".gray-border-bottom").each do |item|
    # ...
    file.write(company)
    # ...
  end
end # <- file is closed automatically at the end of the block