在Mechanize(Ruby)中,如何登录然后刮取?
我的目标:在Ror3上,从一个需要你登录才能下载的站点获取一个PDF文件 我的方法是使用Mechanize: 步骤1:登录 步骤2:因为我已经登录,所以获取PDF链接 问题是,当我调试并单击已删除的链接时,我会被重定向到登录页面,而不是获取文件 我在步骤1中做了两个控制:在Mechanize(Ruby)中,如何登录然后刮取?,ruby,forms,screen-scraping,mechanize,Ruby,Forms,Screen Scraping,Mechanize,我的目标:在Ror3上,从一个需要你登录才能下载的站点获取一个PDF文件 我的方法是使用Mechanize: 步骤1:登录 步骤2:因为我已经登录,所以获取PDF链接 问题是,当我调试并单击已删除的链接时,我会被重定向到登录页面,而不是获取文件 我在步骤1中做了两个控制: (...) search_results = form.submit puts search_results.body =>{“succes”:true,“URL”:“/sso/题词/”} 显然登录成功了 puts agen
(...)
search_results = form.submit
puts search_results.body
=>{“succes”:true,“URL”:“/sso/题词/”}
显然登录成功了
puts agent.cookie_jar.jar
=>我可以找到有关我的会话的信息,我想cookies已保存
有没有关于我做错了什么的暗示?
(可能很重要:在网站上,当您登录“”时,您将被重定向到主页(elwatan.com)
下面是我的代码:
# step 1, login:
agent = Mechanize.new
page = agent.get("http://elwatan.com/sso/inscription/inscription_payant.php")
form = page.form_with(:id => 'form-login-page')
form.login = "my_mail"
form.password = "my_pasword"
search_results = form.submit
# step 2, get the PDF:
@watan = {}
page.parser.xpath('//th/a').each do |link|
puts @watan[link.text.strip] = link['href']
end
页面
变量在提交、单击链接等后不会更新
您需要处理提交后返回的页面:
agent = Mechanize.new
page = agent.get("http://elwatan.com/sso/inscription/inscription_payant.php")
form = page.form_with(:id => 'form-login-page')
form.login = "my_mail"
form.password = "my_pasword"
page = form.submit
或手动获取新页面:
agent = Mechanize.new
page = agent.get("http://elwatan.com/sso/inscription/inscription_payant.php")
form = page.form_with(:id => 'form-login-page')
form.login = "my_mail"
form.password = "my_pasword"
form.submit
page2 = agent.get('http://...')
页面
变量在提交、单击链接等后不会更新
您需要处理提交后返回的页面:
agent = Mechanize.new
page = agent.get("http://elwatan.com/sso/inscription/inscription_payant.php")
form = page.form_with(:id => 'form-login-page')
form.login = "my_mail"
form.password = "my_pasword"
page = form.submit
或手动获取新页面:
agent = Mechanize.new
page = agent.get("http://elwatan.com/sso/inscription/inscription_payant.php")
form = page.form_with(:id => 'form-login-page')
form.login = "my_mail"
form.password = "my_pasword"
form.submit
page2 = agent.get('http://...')
页面
变量在提交、单击链接等后不会更新
您需要处理提交后返回的页面:
agent = Mechanize.new
page = agent.get("http://elwatan.com/sso/inscription/inscription_payant.php")
form = page.form_with(:id => 'form-login-page')
form.login = "my_mail"
form.password = "my_pasword"
page = form.submit
或手动获取新页面:
agent = Mechanize.new
page = agent.get("http://elwatan.com/sso/inscription/inscription_payant.php")
form = page.form_with(:id => 'form-login-page')
form.login = "my_mail"
form.password = "my_pasword"
form.submit
page2 = agent.get('http://...')
页面
变量在提交、单击链接等后不会更新
您需要处理提交后返回的页面:
agent = Mechanize.new
page = agent.get("http://elwatan.com/sso/inscription/inscription_payant.php")
form = page.form_with(:id => 'form-login-page')
form.login = "my_mail"
form.password = "my_pasword"
page = form.submit
或手动获取新页面:
agent = Mechanize.new
page = agent.get("http://elwatan.com/sso/inscription/inscription_payant.php")
form = page.form_with(:id => 'form-login-page')
form.login = "my_mail"
form.password = "my_pasword"
form.submit
page2 = agent.get('http://...')
agent
变量保留会话和cookie
因此,您首先要像以前一样进行登录,然后编写agent.get(---此处的pdf链接-)
在您的示例中,代码是一个小错误:submit
的结果在search\u results
中,然后您继续使用page
搜索链接
因此,在您的情况下,我想它应该看起来像(当然未经测试):
agent
变量保留会话和cookie
因此,您首先要像以前一样进行登录,然后编写agent.get(---此处的pdf链接-)
在您的示例中,代码是一个小错误:submit
的结果在search\u results
中,然后您继续使用page
搜索链接
因此,在您的情况下,我想它应该看起来像(当然未经测试):
agent
变量保留会话和cookie
因此,您首先要像以前一样进行登录,然后编写agent.get(---此处的pdf链接-)
在您的示例中,代码是一个小错误:submit
的结果在search\u results
中,然后您继续使用page
搜索链接
因此,在您的情况下,我想它应该看起来像(当然未经测试):
agent
变量保留会话和cookie
因此,您首先要像以前一样进行登录,然后编写agent.get(---此处的pdf链接-)
在您的示例中,代码是一个小错误:submit
的结果在search\u results
中,然后您继续使用page
搜索链接
因此,在您的情况下,我想它应该看起来像(当然未经测试):
感谢您的回答;不幸的是,它不起作用,我仍被重定向到登录页!感谢您的回答;不幸的是,它不起作用,我仍被重定向到登录页!感谢您的回答;不幸的是,它不起作用,我仍被重定向到登录页!感谢您的回答;unfo当然,它不起作用,我仍然被重定向到登录页面!你打算一次又一次地问同一个问题吗?我的错,我只是在这个问题中添加了一些新的细节,也许我可以将它添加到前面的问题中(事实上,我在这篇文章中得到了正确的答案).Sorrypguardiario什么?他需要一个解决方案。有两个问题!我的贡献:你打算反复问同一个问题吗?我的错,我只是在这个问题中添加了一些新的细节,也许我可以将其添加到前一个问题中(事实上我在这篇文章中得到了正确的答案).Sorrypguardiario什么?他需要一个解决方案。有两个问题!我的贡献:你打算反复问同一个问题吗?我的错,我只是在这个问题中添加了一些新的细节,也许我可以将其添加到前一个问题中(事实上我在这篇文章中得到了正确的答案).Sorrypguardiario什么?他需要一个解决方案。有两个问题!我的贡献:你打算反复问同一个问题吗?我的错,我只是在这个问题中添加了一些新的细节,也许我可以将其添加到前一个问题中(事实上我在这篇文章中得到了正确的答案).Sorrypguardiario什么?他需要一个解决方案。有两个问题!我的贡献:谢谢,但不幸的是,我调试时什么也没有得到(没有更多链接);在第2步中,当我们在“page=form.submit”之前设置时,解析变量“page”是否正常(而不是“page=agent.get(…)”还有?非常感谢!表单提交将返回新页面。我认为您首先需要登录,然后在该页面上,您可以解析链接?也许您应该在提交表单后再次获得第一页。不确定mechanize是否可以执行javascript。它起作用了!我刚刚在步骤2中更改了“代理”的“页面”。get(“)“它工作起来很有魅力。非常感谢,这对我帮助很大!谢谢,但不幸的是,我在调试时什么也没有得到(没有更多链接);在步骤2中,当我们在“page=form.submit”之前设置变量时,解析变量“page”是否正常(而不是“page=agent.get(…)”还有?非常感谢!表单提交将返回新页面。我认为您首先需要登录,然后在该页面上,您可以解析链接?也许您应该在提交表单后再次获得第一页。而不是su