使用Nokogiri进行Web Scraping :: HTML和Ruby - 输出到CSV问题

时间:2013-03-28 19:50:20

标签: html ruby web-scraping nokogiri scrape

我有一个脚本可以删除网店的HTML文章页面。我正在测试一组22页,其中5篇文章页面有产品描述而其他页面没有。

此代码在屏幕上显示正确的信息:

if doc.at_css('.product_description')
  doc.css('div > .product_description > p').each do |description|
    puts description
  end
  else
    puts "no description"
end

但是现在我仍然坚持如何正确地将找到的产品描述输出到我正在将它们写入CSV文件的数组中。

尝试了几个选项,但到目前为止它们都没有。 如果我替换puts description @description << description.content,那么文章的所有描述最终都会出现在CSV的上面一行,尽管它们不属于该行中的文章。

当我同时替换@description = "no description"的“无描述”时,我的CSV中的前14行每行收到1个字母“无描述”。看起来很有趣,但这不是我需要的。

如果需要更多代码,请大声喊叫!

这是我在脚本中使用的CSV代码:

    CSV.open("artinfo.csv", "wb") do |row|
    row << ["category", "sub-category", "sub-sub-category", "price", "serial number",  "title", "description"]
    (0..@prices.length - 1).each do |index|
    row << [
            @categories[index], 
            @subcategories[index], 
            @subsubcategories[index], 
            @prices[index],
            @serial_numbers[index], 
            @title[index],
            @description[index]]
     end 
    end  

1 个答案:

答案 0 :(得分:0)

听起来您的数据没有正确排列。如果是,你应该能够做到:

CSV.open("artinfo.csv", "w") do |csv|
  csv << ["category", "sub-category", "sub-sub-category", "price", "serial number",  "title", "description"]
  [@categories, @subcategories, @subsubcategories, @prices, @serial_numbers, @title, @description].transpose.each do |row|
    csv << row
  end 
end