[英]Unexplained Inconsistency when Downloading an XLS file with Ruby Mechanize after redirect
我有一個訪問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而不是所需的電子表格。
兩個頁面的URL為:
如您所見,如果您在瀏覽器中訪問每個頁面(我使用的是Chrome),然后單擊“導出到Excel文件”,則將下載電子表格文件,並且沒有問題。 “ 96-128”具有更多行,因此,單擊“導出”鏈接時,它將帶您到一個新頁面,該頁面每10秒左右刷新一次,直到文件開始下載為止。 我該如何解決這個問題,為什么會有這種不一致之處?
單擊96-128上的“導出”會將您帶到使用這種標簽刷新的頁面(我之前從未聽說過):
<meta http-equiv="refresh" content="5;url=/ecfs/comment_search/export?exportType=xls"/>
默認情況下,Mechanize將不遵循這些刷新。 為了解決這個問題,請更改agent
的設置:
agent.follow_meta_refresh = true
進行中的12-268有48個條目,96-128有4046條目。當我單擊后者上的“導出到Excel文件”時,有時會有一個頁面說:
完成4046條記錄中的933條。 如果此頁面沒有自動重新加載,請單擊。
我想機械化也看到了這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.