ruby - Mechanize 链接#click vs Agent#get

标签 ruby mechanize mechanize-ruby

我有一个应用程序,它在页面上查找某些链接(使用 CSS)并通过在 href 值上使用 agent#get 来检索链接引用的页面。这已经工作了几个月直到今天(大概该网站已经改变了一些东西,因为其他网站仍然有效),而该网站正在返回一个不同的页面(在网页层次结构上,如果这有什么不同;但这可能是网站决定的返回该页面而不是请求的页面)。 page.uri 反射(reflect)了返回的实际 URI,该 URI 与请求的 URI 不同,但响应代码是 200,因此大概没有发生重定向。

为了弄清楚发生了什么,我尝试定位链接并执行 page.links[38].click。这将返回正确的页面。以编程方式找到正确的链接有些问题(因为您不能使用 CSS 来查找链接,只能使用一个元素)所以我想继续使用我当前的方法。我试图了解使用 agent#get 与 link#click 检索页面有何不同。在您提问之前,我已经验证了代理的 URI#get IS 与我#click 的链接相同。 #click 与 #get 有什么不同,可能导致一个检索正确的页面而另一个检索不同的页面?

最佳答案

自己看 what click does here .它调用 get ,但首先它会设置引用者并进行一些机器人检查。

关于ruby - Mechanize 链接#click vs Agent#get,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18389679/

相关文章:

ruby - . vs::(点与双冒号)用于调用方法

ruby-on-rails - 301 重定向只使用路由,没有 Controller

ruby - Mechanize links_with 没有正确过滤文本

ruby-on-rails - Mechanize 无法连接到站点

ruby - 将字符串拆分为 N 个字符的子字符串

ruby-on-rails - Ruby on Rails 中的选项卡式菜单

ruby-on-rails - Mechanize 获取 "div' 秒之间的内容”

ruby - XPath 使用 Nokogiri 返回空数组

python - Python/Mechanize 中的 Http 错误 405/500(使用 mechanize 自动登录一个网站)

ruby - Ruby Mechanize 的名称字段空白