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

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

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

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

Ruby

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

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

1回答

1222閲覧

open-uri errorについて

yuzujoe

総合スコア49

スクレイピング

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

Ruby

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

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2019/08/18 05:12

編集2019/08/18 08:00

googleにアクセスして検索ワードを取得するプログラムを作成してjenkins上で動かしております。
データの取得はできるのですが

jenkinsコンソール上に

/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/open-uri.rb:359:in `open_http': 400 Bad Request (OpenURI::HTTPError) from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/open-uri.rb:737:in `buffer_open' from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/open-uri.rb:212:in `block in open_loop' from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/open-uri.rb:210:in `catch' from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/open-uri.rb:210:in `open_loop' 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 suggest-word.rb:17:in `block (2 levels) in <main>' from suggest-word.rb:13:in `each' from suggest-word.rb:13:in `block in <main>' from suggest-word.rb:12:in `open' from suggest-word.rb:12:in `<main>' Build step 'シェルの実行' marked build as failure 成果物を保存中 Finished: FAILURE

このエラーが発生

該当の箇所は

doc = REXML::Document.new(open(url).read.encode("UTF-8"))

参考にしたもの

https://ja.stackoverflow.com/questions/9385/ruby%E3%81%AEopen-uri%E3%81%AE400-bad-request%E5%AF%BE%E7%AD%96%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6internet-archivearchive-org%E3%81%B8%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

こちらの記事を参考にしているのですがいまいちよくわからず質問させていただいております。
どなたか知見がございましたらご教授頂けますと幸いです。よろしくお願い致します

追記

こちらにプログラムコードを追記致します

File.open('word.txt') do |file| file.each do |line| keyword = line.chomp base_url = 'https://www.google.com/complete/search?h1=ja&output=toolbar' url = "#{base_url}&q=#{keyword}" doc = REXML::Document.new(open(url).read.encode("UTF-8")) doc.elements.each('toplevel/CompleteSuggestion/suggestion') do |value| ....

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

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

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

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

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

otn

2019/08/18 13:19

GoogleにAPI使用以外でのプログラムでアクセスしていることが検知されるとIPアドレスがブロックされますよ。 一定時間で解けるはずですが。
yuzujoe

2019/08/19 01:21

ありがとうございます。 ローカルの環境下ではデータ自体はとってこれているので何か他の問題なのかなと思っております その旨も記載しておきます
guest

回答1

0

doc = REXML::Document.new(open(url).read.encode("UTF-8"))

この時点でのurlに何が入っているかログ取ってURLが正しいかを検証していくとよいでしょう。

また、実はGET以外のHTTPメソッドであるかやクッキーが必要でないかを確認する事も確認が必要です。

投稿2019/08/18 06:23

asm

総合スコア15147

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問