2

Nokogiriを使って、ウェブサイトをスクレイプしてCSVファイルを作成する非常に簡単なプログラムを作成しました。正しいデータを取得してCSVを作成していますが、データは1つのセル(A1)にプッシュされ、各値がコンマで区切られた列として出力されます。

すべての情報を単一のセルに入れるのではなく、コンマで区切られた各値の列を作成するようにCSVに指示するにはどうすればよいですか?

require 'open-uri'
require 'nokogiri'
require 'csv'

doc = Nokogiri::HTML(open('somewebpage.com'))
CSV.open("webpagedata.csv", "wb") do |csv|
    data = doc.css('.information h3 a').map { |link| link['href']  }
    puts data
    csv << [data]
end
4

1 に答える 1

4

からの結果doc.css('.information h3 a').map { |link| link['href'] }はすでに配列であるため、CSV ファイルに追加するときに でラップする必要はありません[...]

行を変更する

csv << [data]

csv << data

CSV ライブラリは主に行を扱うため、行ではなく列を作成する場合のエントリごとに (単一エントリ) 行を追加する必要があります。

CSV.open("webpagedata.csv", "wb") do |csv|
  data = doc.css('.information h3 a').map { |link| link['href']  }
  data.each do |entry|
    csv << [entry]
  end
end

この場合、単一のアイテムではなく配列を追加する必要があるため、 の周りに必要であることに注意してください。[...]entry

于 2012-12-21T15:14:05.567 に答える