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文件下载_Ruby_Curl_Cucumber_Nokogiri_Mechanize - Fatal编程技术网

Ruby文件下载

Ruby文件下载,ruby,curl,cucumber,nokogiri,mechanize,Ruby,Curl,Cucumber,Nokogiri,Mechanize,是否有方法访问此对话框以获取文件名或将此文件保存到某个位置,以便我以后可以访问它。我正在使用Ruby mechanize在网站中导航,以访问此屏幕 我会这样做 使用nokogiri打开页面: @doc = Nokogiri::HTML(open(url)) 浏览文档页面,找到要下载的链接。 然后您可以使用以下链接: require 'net/http' Net::HTTP.start('theserver.com') { |http| resp = http.get('/xx/th


是否有方法访问此对话框以获取文件名或将此文件保存到某个位置,以便我以后可以访问它。我正在使用Ruby mechanize在网站中导航,以访问此屏幕

我会这样做

使用nokogiri打开页面:

@doc = Nokogiri::HTML(open(url)) 
浏览文档页面,找到要下载的链接。 然后您可以使用以下链接:

require 'net/http'

Net::HTTP.start('theserver.com') { |http| 
   resp = http.get('/xx/the_file_to_downlaod.csv')
      open('the_downlaod.csv', 'wb') { |file|
         file.write(resp.body)
      }
} 

我会这样做的

使用nokogiri打开页面:

@doc = Nokogiri::HTML(open(url)) 
浏览文档页面,找到要下载的链接。 然后您可以使用以下链接:

require 'net/http'

Net::HTTP.start('theserver.com') { |http| 
   resp = http.get('/xx/the_file_to_downlaod.csv')
      open('the_downlaod.csv', 'wb') { |file|
         file.write(resp.body)
      }
} 

没有与mechanize的对话框。提交表单,该表单返回一个Mechanize::File对象,然后可以这样保存:

file = form.submit
File.open('myfile','w'){|f| f << file.body}
file=form.submit

File.open('myfile','w'){| f | f没有mechanize对话框。您提交表单,该表单返回一个mechanize::File对象,然后可以像这样保存:

file = form.submit
File.open('myfile','w'){|f| f << file.body}
file=form.submit


open('myfile','w'){| f | f我能想到的最简单的方法是使用TAB和ENTER(win32ole)为了下载它…对不起,我是Ruby新手,我能把这个放到我的脚本中,让它自动下载吗?你需要的只是在脚本的顶部加上“win32ole”.看下面的解决方案。我很困惑,我不明白Mechanize是一块宝石,为什么你要用Nokogiri标记这篇文章?我标记Nokogiri是因为它是内置于mechanize中,您可以将其与mechanize一起使用。您可以在网站中导航到您想要访问的页面,然后使用nokogiri提取文件的url,然后使用curb下载文件。我能想到的最简单的方法是使用TAB and ENTER(win32ole)为了下载它…对不起,我是Ruby新手,我能把这个放到我的脚本中,让它自动下载吗?你需要的只是在脚本的顶部加上“win32ole”.看下面的解决方案。我很困惑,我不明白Mechanize是一块宝石,为什么你要用Nokogiri标记这篇文章?我标记Nokogiri是因为它是内置于mechanize中,您可以将其与mechanize一起使用。您可以在网站中导航到您想要访问的页面,然后使用nokogiri提取文件的url,然后使用Urb下载文件。如果我在脚本中键入此内容[“@doc=nokogiri::HTML(open(url))”]它将打开“下载/保存”对话框的url?我不这么认为,这是由浏览器完成的。Nokogiri用于浏览网页而不是下载,您可以使用http.get(xxx)对于下载itI,我不知道我如何使用ruby脚本单击表单上的submit按钮,然后从显示的对话框中访问该文件。如果我使用“@doc=Nokogiri::HTML(open(url))我需要对话框的url,但我没有。我只有我单击提交的表单的url。我建议的方法不是模拟单击,而是查找并跟踪url。如果你想模拟单击,我想你应该遵循@Xwris StoixeiaIt的建议。你描述了一种过于复杂的方法执行GET请求。OP是发布到表单。如果我在脚本中键入此内容[“@doc=Nokogiri::HTML(open(url))”],它将打开下载/保存对话框的url?我不这么认为,这是由浏览器完成的。Nokogiri是用于浏览网页而不是下载,您可以使用http.GET(xxx)对于下载itI,我不知道我如何使用ruby脚本单击表单上的submit按钮,然后从显示的对话框中访问该文件。如果我使用“@doc=Nokogiri::HTML(open(url))我需要对话框的url,但我没有。我只有我单击提交的表单的url。我建议的方法不是模拟单击,而是查找并跟踪url。如果你想模拟单击,我想你应该遵循@Xwris StoixeiaIt的建议。你描述了一种过于复杂的方法执行GET请求。OP正在发布到表单。