Mechanize / Ruby读取404页面的源代码

时间:2012-11-02 01:53:37

标签: http-status-code-404 mechanize

我所做的只是加载机械化,并获得一个返回404的页面。但这正是我想要的。 404页面有很多我想在我的例子中使用的HTML。

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

我似乎无法找到任何进一步的信息。

2 个答案:

答案 0 :(得分:11)

您需要处理异常:

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

答案 1 :(得分:0)

这个可能就是在写答案的时候(代码大约在5年前发生了变化),但现在不再是这样了。您现在可以将代理程序实例上的allowed_error_codes设置为整数或字符串数​​组,并将值设置为您希望处理的HTTP响应代码,而不会例外。文档(在编写本文时)注意“将在不检查此列表的情况下处理2xx,3xx和401状态代码。”