質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

0回答

1211閲覧

【Ruby/Nokogiri】情報取得結果をCSV出力しても列方向に並んでくれません

kounotori

総合スコア13

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2018/09/24 13:57

前提・実現したいこと

初めまして。Rubyを学び始めて数日が経過した程度が私のレベルです。
非常に初歩的な質問をしてしまうと思いますがご容赦ください。

今回、Webからスクレイピングをしようと思って試行錯誤しています。
Nokogiriを使用してコードを書き、情報自体は取得できたのですが問題がありました。
csv出力をしようと思い、出力方法を色々検索して試してみたのですが、どうしても列方向に
並べることができません。

内容としては取得した情報からタグを除いて(.content)列方向に並べたいのです。
更にいくつかの疑問があります。

1.以下のコードではタグ部分のみしかcsvに出力されませんでした。なぜなのでしょう?
これは後に記載の全文から抜粋して書き換えています。

doc.css('span.much-title').each do |s|
csv.puts s
end

想定ではputsでテスト表示した文がそのまま表示されるはずでした。
しかし、実際は本文の前のタグのみだけが出力されてしまいます。

2.文字化けが直せません。
csvで出力すると文字化けします。

doc = Nokogiri::HTML(html,nil,charset)

の部分を utf-8 や nil に書き換えてもだめでした。

以上の点をお答えいただければ幸いです。よろしくお願いいたします。

発生している問題・エラーメッセージ

エラーメッセージ undefined method `map' for #<String:0x0000000003a30770> (NoMethodError)

該当のソースコード

全文を記載します。相違部分はアドレスとクラス名のみです。

require 'open-uri' require 'nokogiri' require 'csv' url = 'https://XXX/' charset = nil html = open(url) do |f| charset = f.charset f.read end doc = Nokogiri::HTML(html,nil,charset) csv = CSV.open('result.csv', 'w') best = [] doc.css('span.much-title').each do |s| best.push(s.text) end puts best CSV.open('result.csv', 'w') do |sss| best.each do |ss| sss << ss end end

試したこと

bestを二重配列にしてみたり、ネットで調べたコードを順に試しましたが望む結果には至りませんでした。
必要な情報自体は取得できています。
追加情報が必要でしたら追記いたします。

補足情報(FW/ツールのバージョンなど)

Atomで動作テストをしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/09/24 15:08

特におかしい点は無いようです。どういうデータに対して、どういう結果を期待して、実際にはどういう結果になったかを書いてください。どういう結果にならなかったという話は不要です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問