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

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

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

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

タイムアウト

タイムアウトはイベント発生から完了までに掛かる経過時間に対する一定の待ち時間を指します。また、特定の時間が経過された場合に発生するイベントを指すこともあります。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

2988閲覧

【Ruby】selenium実行中にNet::ReadTimeoutとなる

kaori_oka

総合スコア176

Ruby

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

タイムアウト

タイムアウトはイベント発生から完了までに掛かる経過時間に対する一定の待ち時間を指します。また、特定の時間が経過された場合に発生するイベントを指すこともあります。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2020/01/28 01:52

前提・実現したいこと

seleniumでサイト調査をしておりまして、対象ページが5000ページくらいあり、
2~3秒に1度アクセスして情報取得を繰り返すようにしています。
途中でタイムアウトして止まってしまいます。
テスト用に少量ページで実行すると起こらないので再現度が低いです。

しかしながら途中で止まってしまうと困るので、安定した稼働をさせるために、
タイムアウトをしたら時間をおいて再度実行するような手順を書いた方がよいのではないか?
と思っています。

発生している問題

ページ数がたくさんなので、プログラム実行したまま放置してました。
今朝確認すると下記のようなエラーがでました。

console

1C:/Ruby26-x64/lib/ruby/2.6.0/net/protocol.rb:217:in et:(closed)> (Net::ReadTimeout)

調査対象ページを20ページにしぼってプログラムを実行して何度かテストしていますが、
特に途中で止まるようなことがなかったので、長時間やることによって上記のようなエラーがでたのではないか?とおもいます。

該当のソースコード

ruby

1 2csv_import_url.each do |url| 3 driver.navigate.to(url) # この行でエラー(Net::ReadTimeout)が出て停止する 4 ~ ここに処理 ~ 5end 6

試したこと

5000ページの回遊をすると、4時間くらいかかってしまうので、
コードがちゃんと実装されているかを確認する際には20件にしぼり、アプリケーションを実行しています。
件数をしぼって実行した時はとくにタイムアウトのエラーはでなかったので、
毎回再現できないので、どう検証するのがいいか悩んでます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ループ文の中でtry-catchを使えばいいのではないでしょうか。
(rubyだと確かbegin-rescueだったはずです。)

tryの中でタイムアウトエラーが起こったら
catchに行くようにしてやり、
当該サイトがぽしゃってることをログにでも書き込んで、
次のサイトをスクレイピングしに行けばいいです。

投稿2020/01/28 02:47

shirai

総合スコア1290

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

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

kaori_oka

2020/01/28 02:54

try-catch検索してみます!
kaori_oka

2020/01/28 09:03

何度か実行繰り返して様子みてみます!
kaori_oka

2020/01/30 00:51

ありがとうございましたbegin-rescueでタイムアウト時の処理をはさむことで安定して動作しています!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問