刮痧我发现有些网址失败了。检查后,网址在浏览器中看起来没问题,并且在wireshark中看到远程服务器正在回答200我终于找到了网址:
http://www.segundamano.es/electronica-barcelona-particulares/galaxy-note-3-mas.htm
失败了
Net::HTTP::Persistent::Error: too many bad responses after 0 requests on 42319240, last used 1414078471.6468294 seconds ago
更奇怪的是,如果从最后一部分删除一个角色,它就可以了。如果您将角色添加到其他位置,则会再次失败。
更新1
"代码"
agent = Mechanize.new
page = agent.get("http://www.segundamano.es/electronica-barcelona-particulares/galaxy-note-3.htm")
Net::HTTP::Persistent::Error: too many bad responses after 0 requests on 41150840, last used 1414079640.353221 seconds ago
答案 0 :(得分:0)
这是一个网络错误,如果您对来自同一IP的某个来源发出太多请求,通常会发生网络错误,因此页面加载时间过长。您可以尝试向连接代理添加自定义超时,保持连接活动并忽略错误的分块(可能不好):
agent = Mechanize.new
agent.keep_alive = true
agent.ignore_bad_chunking = true
agent.open_timeout = 25
agent.read_timeout = 25
page = agent.get("http://www.segundamano.es/electronica-barcelona-particulares/galaxy-note-3.htm")
但这并不能保证连接成功,只会增加连接机会。
很难说为什么你会在一个网址上而不是另一个网址上收到错误。当你删除3时,你要求一个不同的页面;一个可能更容易让服务器处理?我的观点是:您的Mechanize设置没有任何问题,但是您回复的响应。
答案 1 :(得分:0)
同意Severin,问题出在另一边。由于我无法在服务器中执行任何操作,因此我尝试使用不同的库来获取数据。有些人工作而其他人没有工作,这很奇怪。尝试不同的机械设置,最后我找到了一个好的设置:
agent = Mechanize.new { |agent|
agent.gzip_enabled = false
}