3

私がしているのは、mechanizeをロードし、404を返すページを取得することだけです。しかし、それはまさに私が望んでいることです。404ページには、私の例で使用したいhtmlがたくさんあります。

a = mechanize.new
a.get('http://www.youtube.com/watch?v=e4g8jriw4rg')
a.page
=> nil

私はこれについてこれ以上の情報を見つけることができないようです。

4

2 に答える 2

12

例外を処理する必要があります。

begin
  page = a.get 'http://www.youtube.com/watch?v=e4g8jriw4rg'
rescue Mechanize::ResponseCodeError => e
  puts e.response_code # the status code as a string, e.g. "404"
  page = e.page
end

puts page.title
于 2012-11-02T03:56:57.413 に答える
0

これは答えが書かれたとき(約5年前にコードが変更された)の場合であったかもしれませんが、もはやそうではありません。allowed_error_codesこれで、エージェントインスタンスで、例外なく処理するHTTP応答コードに設定された値を持つ整数または文字列の配列に設定できます。ドキュメント(これを書いている時点で)は、「2xx、3xx、および401ステータスコードは、このリストをチェックせずに処理される」と述べています。

于 2017-11-23T18:16:25.240 に答える