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

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

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

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

CSV

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

Ruby

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

747閲覧

ruby スクレイピング 結果 CSVに出力したい

laboumhaein

総合スコア16

スクレイピング

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

CSV

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

Ruby

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

1グッド

1クリップ

投稿2020/01/04 11:38

編集2020/01/05 11:04

以下のコードの結果(puts enname.text含むputs4つ)を何か適当なCSVを作成してそのCSVに出力したいです。
色々、試したのですが、前提知識が不足しているせいかうまくいきません、、、、
申し訳ないのですが、ご教授いただきたいです、、、

sample.csvに入ってるのは以下のURLです
ーーーー
https://www.hareruyamtg.com/ja/purchase/search?product=Kozilek's+Return+foil+OGW&image
https://www.hareruyamtg.com/ja/purchase/searchproduct=Inquisition+of+Kozilek+foil+Magic+Modern+Event+Deck&image
https://www.hareruyamtg.com/ja/purchase/searchproduct=Inquisition+of+Kozilek+foil+ROE&image
ーーーー

ruby

1 2require 'open-uri' 3require 'nokogiri' 4require "csv" 5 6line = [] 7CSV.open("sample.csv", mode = "rt") do |csv| 8 line = csv.readlines 9end 10 11line.each{ |link| 12 for url in link do 13 charset = nil 14 html = open(url) do |f| 15 charset = f.charset 16 f.read 17 end 18 doc = Nokogiri::HTML.parse(html,nil,'utf-8') 19 doc.css('#category_item > div.autopagerize_page_element > ul > li:nth-child(1) > a.itemName').each do |enname| 20 doc.css('#category_item > div.autopagerize_page_element > ul > li:nth-child(2) > a.itemName').each do |jpname| 21 doc.css('#category_item > div.autopagerize_page_element > ul > li:nth-child(1) > div > div.row.not-first.ng-star-inserted > div:nth-child(2)').each do |enprice| 22 doc.css('#category_item > div.autopagerize_page_element > ul > li:nth-child(2) > div > div.row.not-first.ng-star-inserted > div:nth-child(2)').each do |jpprice| 23 24 puts enname.text 25 puts enprice.text 26 puts jpname.text 27 puts jpprice.text 28 end 29 end 30 end 31 end 32 end 33 34 }
DrqYuto👍を押しています

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

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

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

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

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

y_waiwai

2020/01/04 12:10

うまくいかないとは、どううまくいかないんでしょうか。 また、このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
laboumhaein

2020/01/06 09:30

修正しました よろしくお願い申し上げます
guest

回答1

0

質問のポイントが不明ですが、こういうことですか?

Ruby

1puts [enname.text, enprice.text, jpname.text, jpprice.text].join(",")

投稿2020/01/04 12:13

otn

総合スコア84555

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

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

laboumhaein

2020/01/06 11:58

回答ありがとうございます そのご回答いただいた結果を CSVファイル作成→作成したCSVファイルに書き出しということをしたいです。。 結果が帰ってこなかったものに関しては「なし」などの適当な文言もできればいれたいです、、、 わかりづらくてすいません、、、
otn

2020/01/06 14:21

> CSVファイル作成→作成したCSVファイルに書き出しということをしたいです。。 ファイルへの書き方を勉強しましょう。 > 結果が帰ってこなかったものに関しては「なし」などの適当な文言もできればいれたいです if文を勉強しましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問