2

http 認証を使用する Web サイトを回避するのに問題があります。いくつかのスクラップを行っているサイトのリストがありますが、それらのいくつかは http 認証を使用しています。私はそれらのサイトのコンテンツを取得しようとは考えていません.http認証によって保護されているかどうかを判断してから先に進みたいと思っています. たとえば、次のスニペットでは、agent.get が返されないため、処理できません。このようなケースはどうすればよいのでしょうか?

require 'mechanize'
agent = Mechanize.new
page = agent.get('http://freyalovesmusic.co.uk')
4

2 に答える 2

2

ページの読み込みに時間がかかりすぎる場合は、http認証を使用していると見なすことができます。明らかに100%正確ではありませんが、おそらくあなたの状況には十分ですか?

agent.getが返さない場合でも、Timeoutモジュールを使用して、一定の時間が経過した後に先に進むことができます。

require 'mechanize'
require 'timeout'

agent = Mechanize.new
begin
    Timeout::timeout(5) do
        page = agent.get('http://freyalovesmusic.co.uk')
    end
rescue Timeout::Error
    puts 'Page likely using http authentication'
end
于 2012-10-29T20:28:28.380 に答える
1

a を発生させる必要がありますMechanize::UnauthorizedErrorが、何らかの理由で動作が正しくありません。おそらく、mechanize github の問題フォームで報告する必要があります。

于 2012-10-30T00:56:59.987 に答える