【发布时间】:2013-11-26 18:43:43
【问题描述】:
我的 rails 应用是一个使用 Mechanize / Nokogiri 的网络爬虫。由于 KBB.com 及其 cookie 的问题,每次我向他们的服务器发出新的获取请求时,我都必须清除我的应用程序中的 cookie jar。
agent.cookie_jar.clear!
但是,当我的应用正在抓取数据时,它偶尔会遇到带有自动重定向的 KBB.cpm 页面!这会导致错误:
Mechanize::ResponseCodeError: 500 => Net::HTTPInternalServerError for http://www.kbb.com/toyota/prius/2002-toyota-prius/sedan-4d/options/?vehicleid=4843&intent=buy-used -- unhandled response
这会导致我的 rails 应用程序崩溃,因为在重定向之前我无法清除 cookie jar。相反,我想让我的应用程序做的是认识到它可能会遇到错误,并且如果它确实使用不同的进程。比如:
if there_is_an_error
# alternative process for redirect
else
# business as usual
end
这是我的代码:
agent = Mechanize.new
agent.cookie_jar.clear!
page = agent.get(url)
agent.cookie_jar.clear!
page.link_with(:text => "Choose this style").click
agent.cookie_jar.clear!
agent.page.link_with(:text => "Choose price type").click
agent.cookie_jar.clear!
agent.page.links_with(:text => "Get used car price")[2].click
url = agent.page.uri.to_s.sub('retail', 'private-party')
agent.cookie_jar.clear!
agent.get(url)
@kbb_value = agent.page.at('.selected .value').text.delete('$')
【问题讨论】:
标签: ruby-on-rails error-handling mechanize