Rails抓取 - 提交表单

时间:2015-05-19 20:06:18

标签: ruby-on-rails ruby web-scraping nokogiri mechanize

我在页面上填写表格并提交。 这应该会触发下载文件。

但是,当我尝试保存下载的输出时,我得到的是页面的源代码而不是文件。

我的代码是:

mechanize = Mechanize.new
mechanize.pluggable_parser.default = Mechanize::Download

page = mechanize.get('http://page.com/')

form = page.forms.first
form.radiobuttons_with(name: 'presence')[0].check
form.source = "btce"
form.label = "BTC/USD"

mechanize.get_file(form.submit).save!('page.csv')

如何保存提交表单时下载的文件?

1 个答案:

答案 0 :(得分:0)

提交表单后文件是否会自动开始下载? 提交表单可能会返回一个新页面,也可以加载新的脚本/样式表。这可能解释了为什么您的文件包含源代码,因为这就是您要下载的内容。 (如果您下载网页,Mechanize不会抛出错误)

例如,我使用Mechanize填写Google的搜索表单并提交,并将结果保存到google_search.csv。新文件包含页面源代码以及javascript,mySQL和样式表的混合。

您可以使用Firebug挖掘页面的源代码,并查明提交表单时确切发生的情况,这可能是一个被调用的链接,但您并不知道。