Web ショップの 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
forを置き換えると@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