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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

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

Q&A

解決済

1回答

1397閲覧

ruby でAnemone を使っていて、変数のスコープを伸ばしたいです

bouyomisan

総合スコア87

Ruby

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

0グッド

0クリップ

投稿2017/03/12 12:19

編集2017/03/12 14:00

###前提・実現したいこと
Ruby でスクレ―ピングをするために Anemone をつかっています。
複数のリンクからタイトルを取りだしてまとめて表示したいのですが、変数のスコープが伸びずに困っています。

###ソースコード

require 'anemone' require 'nokogiri' require 'kconv' results = [] urls = [] urls.push("https://www.scientificamerican.com/article/epa-chief-pruitt-refuses-to-link-co2-and-global-warming/") urls.push("https://blogs.scientificamerican.com/anecdotes-from-the-archive/medallions-and-the-dark-arts-of-propaganda-1917/") Anemone.crawl(urls, :depth_limit => 0, :delay=>1) do |anemone| anemone.on_every_page do |page| doc = Nokogiri::HTML.parse(page.body.toutf8) title = doc.xpath("//main/header/div/h1").text results.push(title) #ここで表示させることはできても #puts results end #ここで表示できてほしいこ。でもここはだめ。 puts results end

###試したこと
return で複数のリンクのタイトルがほしいので、上のコードでいう下側の puts results で値が表示されててほしいのですが、表示されません。どうしたらいいでしょう。おしえてください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Ruby

1#encoding : utf-8 2require"open-uri" 3require"certified" 4 5urls =["https://www.scientificamerican.com/article/epa-chief-pruitt-refuses-to-link-co2-and-global-warming/", 6 "https://blogs.scientificamerican.com/anecdotes-from-the-archive/medallions-and-the-dark-arts-of-propaganda-1917/"] 7 8urls.each do |url| 9 results = open(url, &:read).scan(%r|<title>(.+?)</title>|) 10 puts results 11end

配列

Ruby

1#encoding : utf-8 2require"open-uri" 3require"certified" 4urls =["https://www.scientificamerican.com/article/epa-chief-pruitt-refuses-to-link-co2-and-global-warming/", 5 "https://blogs.scientificamerican.com/anecdotes-from-the-archive/medallions-and-the-dark-arts-of-propaganda-1917/"] 6 7urls.map!{|e| open(e, &:read).scan(%r|<title>(.+?)</title>|).flatten} 8 9puts urls

Anemoneの使い方は分かりません。
タイトルを取り出すだけならこれでいけると思います。
上でも下でも見た目は変わりません。

投稿2017/03/12 14:52

編集2017/03/12 15:01
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問