2012-12-25 21 views
2

我有访问fcc.gov一个脚本,然后点击触发一个下载链接:不明原因的不一致性下载使用Ruby机械化的XLS文件时后重定向

require "mechanize" 

docket_number = "12-268" #"96-128" 

url = "http://apps.fcc.gov/ecfs/comment_search/execute?proceeding=#{docket_number}" 
agent = Mechanize.new 
agent.pluggable_parser.default = Mechanize::DirectorySaver.save_to 'downloads' 

agent.get(url) do |page| 
    link = page.link_with(:text => "Export to Excel file") 
    xls = agent.click(link) 
end 

能正常工作时docket_number是“12 268" 。但是,当您将其更改为“96-128”时,Mechanize会下载页面的html而不是所需的电子表格。

两个网页的网址是:

正如你所看到的,如果你访问的每个页面一个浏览器(我正在使用Chrome)并点击“导出到Excel文件”,电子表格文件被下载并且没有问题。 “96-128”有更多的行,所以当你点击导出链接时,它会将你带到一个新的页面,每隔10秒刷新一次,直到文件开始下载。我如何解决这个问题,为什么会出现这种不一致?

回答

1

单击导出在96-128后,会进入刷新,使用这种标签的(我从来没有听说过)的页面:

<meta http-equiv="refresh" content="5;url=/ecfs/comment_search/export?exportType=xls"/> 

默认情况下,机械化不会跟着这些刷新。要解决这个问题,在agent更改设置:

agent.follow_meta_refresh = true 

来源:https://stackoverflow.com/a/2166480/94154

0

的程序12-268有48项,96-128具有4046 当我点击“导出到Excel文件”对后者,有时会是一个页面说法:

成品加工933 4046条记录。 如果此页面未自动重新加载,请点击。

我猜机械化也看到了这一点。

+0

嘿,@Huluk。我只是自己解决了这个问题,请参阅下面的答案。 – user94154