Ruby on rails 使用Ruby将web抓取/导出为CSV
这里是ruby n00b,希望能给大家一些指导。我期待刮一个网站(一页600多个名称和链接),并输出到CSV。刮片本身工作正常(脚本运行时输出正确地填充终端),但我无法填充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
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(){..}
块中。