【发布时间】:2014-09-10 04:33:52
【问题描述】:
Ruby n00b 在这里。我两次抓取同一页面 - 但每次都以稍微不同的方式 - 并将它们导出到单独的 CSV 文件。然后我想将 CSV no.1 的第一列和 CSV no.2 的第二列结合起来创建 CSV no.3。
提取 1 号和 2 号 CSV 的代码有效。但是添加我尝试将两个 CSV 合并到第三个(在底部注释掉)返回以下错误 - 两个 CSV 填充正常,但第三个保持空白并且脚本处于似乎是无限循环的状态。我知道这些线不应该在底部,但我看不出它还能去哪里......
alts.rb:45:in `block in <main>': undefined local variable or method `scrapedURLs1' for main:Object (NameError)
from /Users/JammyStressford/.rvm/rubies/ruby-2.0.0-p451/lib/ruby/2.0.0/csv.rb:1266:in `open'
from alts.rb:44:in `<main>'
代码本身:
require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'csv'
url = "http://www.example.com/page"
page = Nokogiri::HTML(open(url))
CSV.open("results1.csv", "wb") do |csv|
page.css('img.product-card-image').each do |scrape|
product1 = scrape['alt']
page.css('a.product-card-image-link').each do |scrape|
link1 = scrape['href']
scrapedProducts1 = "#{product1}"[0..-7]
scrapedURLs1 = "{link1}"
csv << [scrapedProducts1, scrapedURLs1]
end
end
end
CSV.open("Results2.csv", "wb") do |csv|
page.css('a.product-card-image-link').each do |scrape|
link2 = scrape['href']
page.css('img.product-card-image').each do |scrape|
product2 = scrape['alt']
scrapedProducts2 = "#{product2}"[0..-7]
scrapedURLs2 = "http://www.lyst.com#{link2}"
csv << [scrapedURLs2, scrapedProducts2]
end
end
end
## Here is where I am trying to combine the two columns into a new CSV. ##
## It doesn't work. I suspect that this part should be further up... ##
# CSV.open("productResults3.csv", "wb") do |csv|
# csv << [scrapedURLs1, scrapedProducts2]
#end
puts "upload complete!"
感谢阅读。
【问题讨论】:
标签: ruby-on-rails ruby web-scraping nokogiri export-to-csv