Ruby 机械化链接#单击vs代理#获取
我有一个应用程序,它在页面上查找某些链接(使用CSS),并通过使用代理#get on href值检索链接引用的页面。这已经运行了几个月,直到今天(可能是由于其他网站仍在运行,该网站已经发生了一些变化),此时该网站正在返回一个不同的页面(在网页层次结构上,如果这有任何区别的话;但可能是该网站决定返回该页面,而不是请求的页面)。uri反映返回的实际uri,它与请求的uri不同,但响应代码是200,因此可能没有发生重定向Ruby 机械化链接#单击vs代理#获取,ruby,mechanize,mechanize-ruby,Ruby,Mechanize,Mechanize Ruby,我有一个应用程序,它在页面上查找某些链接(使用CSS),并通过使用代理#get on href值检索链接引用的页面。这已经运行了几个月,直到今天(可能是由于其他网站仍在运行,该网站已经发生了一些变化),此时该网站正在返回一个不同的页面(在网页层次结构上,如果这有任何区别的话;但可能是该网站决定返回该页面,而不是请求的页面)。uri反映返回的实际uri,它与请求的uri不同,但响应代码是200,因此可能没有发生重定向 在试图弄清楚发生了什么事情时,我尝试定位链接并执行page.links[38]。
在试图弄清楚发生了什么事情时,我尝试定位链接并执行page.links[38]。单击。返回正确的页面。以编程方式查找正确的链接有些问题(因为您不能使用CSS查找链接,只能查找元素),所以我想继续使用当前的方法。我试图了解使用代理“获取”与“链接”单击检索页面的不同之处。在您询问之前,我已经验证了代理get的URI是否与我单击的链接的URI相同单击与“获取”有什么不同之处,可能导致一方检索正确的页面,而另一方检索不同的页面?请自行查看。它调用
get
,但首先它设置了referer并执行一些机器人检查。问题并不是Link#click和Agent#get之间的区别,而是服务器在某些情况下更改了响应。换句话说,我的假设是错误的。200并不意味着没有发生重定向,它意味着最后一次重定向是200。@pguardiario说得对!这一部分是答案。像这样的评论应该放在问题下或问题的更新中。即使我的回答对你没有帮助,它仍然回答了问题,所以你应该接受它并删除这个。