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

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

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

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

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

解決済

1回答

945閲覧

RailsでWebスクレイピングをしたいがshow.html.erbに表示されない

Smith.A

総合スコア16

スクレイピング

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

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

0グッド

0クリップ

投稿2020/05/05 06:24

編集2020/05/05 06:37

railsでWebスクレイピングを使って画面にQiitaから取ってきたタイトルを表示しようと思ったのですが表示されません。
環境はWSLでrailsのバージョンは6.0.2.2でscaffoldを使って簡単なアプリケーションを作ろうと思いました。
以下はshow.html.erb内でRubyとして実行したものです。

ruby

1require 'nokogiri' 2require 'open-uri' 3 4url = 'https://qiita.com/search?q=ruby' 5 6charset = nil 7 8html = open(url) do |f| 9 charset = f.charset # 文字種別を取得 10 f.read # htmlを読み込んで変数htmlに渡す 11end 12 13doc = Nokogiri::HTML.parse(html, nil, charset) 14doc.xpath('//h1[@class="searchResult_itemTitle"]').each do |node| 15 puts node.css('a').inner_text 16end

これをpタグとして書いたのですが画面内に表示されません。
以下がターミナルにエラーのような形で表示されました。
BodyUpはアプリの名前です。

Bodyup Load (0.7ms) SELECT "bodyups".* FROM "bodyups" WHERE "bodyups"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] ↳ app/controllers/bodyups_controller.rb:67:in `set_bodyup' Rendering bodyups/show.html.erb within layouts/application /mnt/c/Users/User Name/Ubuntu/rails_app1/myapp/app/views/bodyups/show.html.erb:62: warning: calling URI.open via Kernel#open is deprecated, call URI.open directly or use URI#open

どなたかわかる方おられましたら教えてもらえると助かります。

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

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

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

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

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

gentaro

2020/05/05 06:29

> 環境はWindowsで メッセージ見る限りWSLでは? WSLなら「Windowsで」というのは誤解を招きそうですが。
Smith.A

2020/05/05 06:30

すみません。説明不足でした。WSLでやっています。
Smith.A

2020/05/05 06:34

ご指摘ありがとうございました。次回以降気をつけ誤解のないように努めたいと思います。 ありがとうございました。
gentaro

2020/05/05 06:36

いや、次回以降じゃなくて、読む人がわざわざこの欄まで開いて確認してるとは限らないのでいま直しましょうや。
Smith.A

2020/05/05 06:38

書き換えさせていただきました。
guest

回答1

0

ベストアンサー

(1)「以下はshow.html.erb内でRubyとして実行したものです。」とありますが、erbというよりrbに見えます。
erbないで書いたのでしたら、どのように記述したのか確認しておきたいのでえrb全体を載せてください。

(2)「これをpタグとして書いたのですが」とありますが、「これ」ってどれでしょう。 codeとして我々が読めるように載せてください。

(3) そのNokogiriコードで欲しい情報が採れることは確認してありますか?

(4)「以下がターミナルにエラーのような形で表示されました」とありますが、これはエラーではなく経過表示です。logに出しているものを画面にも出してくれているだけ

投稿2020/05/10 02:52

winterboum

総合スコア23567

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

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

Smith.A

2020/05/10 02:58

すみません。この問題は解決していました。自分で解決したことを公開するのを忘れていました。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問