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

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

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

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

Q&A

解決済

1回答

1855閲覧

Nokogiriでスクレイピングに失敗します。

b_b_b

総合スコア32

Ruby

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

0グッド

0クリップ

投稿2018/03/21 05:21

前提・実現したいこと

qiitaに投稿されているRUBYの記事のタイトルを抽出してCSVに出力したい。

以下のソースコードを実行したところ、以下のエラーメッセージが出ました。
どのような修正が必要でしょうか?

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

/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/open-uri.rb:225:in `open_loop': redirection forbidden: http://qiita.com/search?q=ruby, -> https://qiita.com/search?q=ruby, (RuntimeError) from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/open-uri.rb:151:in `open_uri' from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/open-uri.rb:717:in `open' from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/open-uri.rb:35:in `open' from scrape.rb:15:in `block in <main>' from scrape.rb:14:in `each' from scrape.rb:14:in `<main>'```

該当のソースコード

ruby

1require "nokogiri" 2require "open-uri" 3require "csv" 4 5urls = %w( 6 http://qiita.com/search?q=ruby, 7 http://qiita.com/search?q=php, 8 http://qiita.com/search?q=swift, 9) 10titles = [] 11 12charset = nil; 13urls.each do |url| 14 html = open(url) do |f| 15 charset = f.charset 16 f.read 17 end 18 19 doc = Nokogiri::HTML.parse(html, nil, charset) 20 doc.xpath('//h1[@class="searchResult_itemTitle"]').each do |node| 21 title = node.css("a").inner_text 22 titles.push(title) 23 end 24end 25 26CSV.open("qiita_title.csv", "w") do |csv| 27 csv << titles 28end 29

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

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

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

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

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

guest

回答1

0

ベストアンサー

open-uri が、 http から https へのリダイレクトでエラーになっていますので、最初から https://〜 で、始まる URL を与えたら、動作しないでしょうか?

[Ruby] open-uriでhttp->httpsのリダイレクトが禁止されている件 によると gem をインストールする方法もあるそうです。

投稿2018/03/21 05:31

CHERRY

総合スコア25171

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

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

b_b_b

2018/03/21 06:14

httpsに変えると上手くいきました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問