【发布时间】:2011-10-26 04:02:16
【问题描述】:
我正在尝试使用 Ruby 版本的 Mechanize 从我们正在远离的不提供 API 的工单管理系统中提取我雇主的工单。
问题是,Mechanize 似乎没有在post 调用和get 调用之间保留 cookie,如下所示:
require 'rubygems'
require 'nokogiri'
require 'mechanize'
@agent = Mechanize.new
page = @agent.post('http://<url>.com/user_session', {
'authenticity_token' => '<token>',
'user_session[login]' => '<login>',
'user_session[password]' => '<password>',
'user_session[remember_me]' => '0',
'commit' => 'Login'
})
page = @agent.get 'http://<url>.com/<organization>/<repo-name>/tickets/1'
puts page.title
user_session 是该站点的登录页面 POST 的 URL,我已经验证这确实让我登录了。但是从 get 调用返回的页面是“糟糕,你没有登录在!'页面。
我已验证从post 调用返回的页面上的clicking 链接有效,但如果没有JavaScript,我实际上无法到达我需要去的地方。当然,我在浏览器上使用相同的登录名成功完成了此操作。
我做错了什么?
【问题讨论】:
标签: ruby screen-scraping mechanize