Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Ruby将web抓取/导出为CSV_Ruby On Rails_Ruby_Web Scraping - Fatal编程技术网

Ruby on rails 使用Ruby将web抓取/导出为CSV

Ruby on rails 使用Ruby将web抓取/导出为CSV,ruby-on-rails,ruby,web-scraping,Ruby On Rails,Ruby,Web Scraping,这里是ruby n00b,希望能给大家一些指导。我期待刮一个网站(一页600多个名称和链接),并输出到CSV。刮片本身工作正常(脚本运行时输出正确地填充终端),但我无法填充CSV。守则: require 'rubygems' require 'nokogiri' require 'open-uri' require 'csv' url = "http://www.example.com/page/" page = Nokogiri::HTML(open

这里是ruby n00b,希望能给大家一些指导。我期待刮一个网站(一页600多个名称和链接),并输出到CSV。刮片本身工作正常(脚本运行时输出正确地填充终端),但我无法填充CSV。守则:

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

   url = "http://www.example.com/page/"
   page = Nokogiri::HTML(open(url))

   page.css('.item').each do |item|
     name = item.at_css('a').text
     link = item.at_css('a')[:href]
     foo = puts "#{name}"
     bar = "#{link}"

     CSV.open("file.csv", "wb") do |csv|
       csv << [foo, bar]
     end
   end

   puts "upload complete!"
需要“rubygems”
需要“nokogiri”
需要“打开uri”
需要“csv”
url=”http://www.example.com/page/"
page=Nokogiri::HTML(打开(url))
page.css('.item')。每个do | item|
名称=项。at_css('a')。文本
link=item.at_css('a')[:href]
foo=put“#{name}”
bar=“#{link}”
CSV.open(“file.CSV”、“wb”)do | CSV|

csv问题是您正在为每个项目执行
csv.open
。因此,它将用较新的项覆盖文件。因此,在最后,您将看到csv文件中的最后一项

CSV.open
调用移动到
page.css('.item')之前。每个
调用都应该可以工作

CSV.open("file.csv", "wb") do |csv|
  page.css('.item').each do |item|
    name = item.at_css('a').text
    link = item.at_css('a')[:href]
    csv << [name, link]
  end
end
CSV.open(“file.CSV”、“wb”)do | CSV|
page.css('.item')。每个do | item|
名称=项。at_css('a')。文本
link=item.at_css('a')[:href]

你可能会把密码给他。实际上,
page.css..
应该在
CSV.open(){..}
块中。