2017-12-10 25 views
1

私は、csvのURLを実行して画像をダウンロードするMechanizeでスクレーパーを作成しています。Mechanize HTTP Not found 404 Link

問題は、いくつかのイメージはもはや存在せず、404エラーが見つからないということです。私はRubyを初めて使っているので、例外を処理する方法がわからないので、誰かが私を助けてくれることを願っています。

私は

agent = Mechanize.new 

url = CSV.read("links.csv") 

begin 
    url.each do |url| 
     puts url 
     agent.get(url.first).save 
    end 
rescue Net::HTTPNotFound => e 
    puts e.response_code 
    agent = e.agent 
end 

それは私を与えるエラーが何をしようとしているままに

/home/miguel/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/mechanize-2.7.5/lib/mechanize/http/agent.rb:323:in `fetch': 404 => Net::HTTPNotFound for http://www.rockauto.com/info/915/FCA6366_Fronp__ra_p.jpg -- unhandled response (Mechanize::ResponseCodeError) 
    from descargaimagenes.rb:34:in `fetch_with_retry' 
    from /home/miguel/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/mechanize-2.7.5/lib/mechanize.rb:464:in `get' 
/home/miguel/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/mechanize-2.7.5/lib/mechanize/http/agent.rb:323:in `fetch': 404 => Net::HTTPNotFound for http://www.rockauto.com/info/915/FCA6366_Fronp__ra_p.jpg -- unhandled response (Mechanize::ResponseCodeError) 
    from descargaimagenes.rb:34:in `fetch_with_retry' 
    from /home/miguel/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/mechanize-2.7.5/lib/mechanize.rb:464:in `get' 
+0

本当にあなたが知っている、そのURLは本当に404エラーを返します。 – KyrSt

答えて

0

あなたはMechanize::ResponseCodeError例外使用することができます。このエラーがある

をMechanizeが応答コードを検出したときに発生します。 処理方法がわかりません。現在、この例外は、 Mechanizeが200,301、または302以外のレスポンスコードに遭遇した場合にスローされます。 その他のレスポンスコードは、処理するユーザーによって異なります。

レスキューを各ブロック内に移動するには、URLにアクセスしてイメージを保存し、リソースが見つからない場合はレスポンスコードを出力します。

[ 
    'http://www.rockauto.com/Images/whatsnew1.jpg?1512928800', 
    'http://www.rockauto.com/info/915/FCA6366_Fronp__ra_p.jpg', 
    'http://www.rockauto.com/Images/whatsnew2.jpg?1512928800' 
].each do |url| 
    begin 
    agent.get(url).save 
    rescue Mechanize::ResponseCodeError => e 
    puts e.response_code 
    end 
end 

作業用URLは2つあります。中間にあるURLは機能していないため、動作中のURLに対応する2つの画像を取得する必要があります。

+0

Gracias Sebastian、Me salvaste;) –

関連する問題