Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 机械化链接#单击vs代理#获取_Ruby_Mechanize_Mechanize Ruby - Fatal编程技术网

Ruby 机械化链接#单击vs代理#获取

Ruby 机械化链接#单击vs代理#获取,ruby,mechanize,mechanize-ruby,Ruby,Mechanize,Mechanize Ruby,我有一个应用程序,它在页面上查找某些链接(使用CSS),并通过使用代理#get on href值检索链接引用的页面。这已经运行了几个月,直到今天(可能是由于其他网站仍在运行,该网站已经发生了一些变化),此时该网站正在返回一个不同的页面(在网页层次结构上,如果这有任何区别的话;但可能是该网站决定返回该页面,而不是请求的页面)。uri反映返回的实际uri,它与请求的uri不同,但响应代码是200,因此可能没有发生重定向 在试图弄清楚发生了什么事情时,我尝试定位链接并执行page.links[38]。

我有一个应用程序,它在页面上查找某些链接(使用CSS),并通过使用代理#get on href值检索链接引用的页面。这已经运行了几个月,直到今天(可能是由于其他网站仍在运行,该网站已经发生了一些变化),此时该网站正在返回一个不同的页面(在网页层次结构上,如果这有任何区别的话;但可能是该网站决定返回该页面,而不是请求的页面)。uri反映返回的实际uri,它与请求的uri不同,但响应代码是200,因此可能没有发生重定向


在试图弄清楚发生了什么事情时,我尝试定位链接并执行page.links[38]。单击。返回正确的页面。以编程方式查找正确的链接有些问题(因为您不能使用CSS查找链接,只能查找元素),所以我想继续使用当前的方法。我试图了解使用代理“获取”与“链接”单击检索页面的不同之处。在您询问之前,我已经验证了代理get的URI是否与我单击的链接的URI相同单击与“获取”有什么不同之处,可能导致一方检索正确的页面,而另一方检索不同的页面?

请自行查看。它调用
get
,但首先它设置了referer并执行一些机器人检查。

问题并不是Link#click和Agent#get之间的区别,而是服务器在某些情况下更改了响应。换句话说,我的假设是错误的。

200并不意味着没有发生重定向,它意味着最后一次重定向是200。@pguardiario说得对!这一部分是答案。像这样的评论应该放在问题下或问题的更新中。即使我的回答对你没有帮助,它仍然回答了问题,所以你应该接受它并删除这个。