【发布时间】:2013-03-28 19:50:19
【问题描述】:
我有一个脚本可以抓取网上商店的 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
【问题讨论】:
-
能否也向我们展示您的 CSV 代码?
-
部分困惑是调用您的 CSV 对象
row -
不明白,csv文件中其他数据显示正确...只是描述行为怪异
标签: html ruby web-scraping nokogiri scrape