Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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
在Mechanize(Ruby)中,如何登录然后刮取?_Ruby_Forms_Screen Scraping_Mechanize - Fatal编程技术网

在Mechanize(Ruby)中,如何登录然后刮取?

在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

我的目标:在Ror3上,从一个需要你登录才能下载的站点获取一个PDF文件

我的方法是使用Mechanize:

步骤1:登录 步骤2:因为我已经登录,所以获取PDF链接

问题是,当我调试并单击已删除的链接时,我会被重定向到登录页面,而不是获取文件

我在步骤1中做了两个控制:

(...)
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