2

我有一个访问 fcc.gov 的脚本,然后单击触发下载的链接:

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 秒左右刷新一次,直到文件开始下载。我怎样才能解决这个问题,为什么会出现这种不一致?

4

2 回答 2

1

单击 96-128 上的 Export 将带您进入使用这种标签刷新的页面(我以前从未听说过):

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

默认情况下,Mechanize 不会跟随这些刷新。要解决这个问题,请更改以下设置agent

agent.follow_meta_refresh = true

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

于 2012-12-25T22:20:19.990 回答
0

前面的 12-268 有 48 个条目,96-128 有 4046 个。当我点击后者的“导出到 Excel 文件”时,有时会有一个页面显示:

完成处理 4046 条记录中的 933 条。如果此页面未自动重新加载,请单击。

我猜mechanize也看到了这一点。

于 2012-12-25T22:15:01.180 回答