2013-11-26 53 views
0

我的导轨应用程序是一个使用机械化/ Nokogiri网络刮板。由于KBB.com及其cookie的问题,每次我向他们的服务器发出新的获取请求时,我都必须在我的应用程序中清除我的cookie jar。如何让我的Rails应用程序解决错误?

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罐。相反,我想让我的应用程序执行的操作是识别它可能遇到错误,并且它确实使用了不同的过程。喜欢的东西:

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('$') 

回答

1

您可以解救Mechanize :: ResponseCodeError异常,并在该块内执行重定向的替代过程

相关问题