2017-02-27 75 views
1

我試圖通過python腳本從this page導出CSV。複雜的部分是在點擊this page上的導出按鈕後打開頁面,開始下載並再次關閉,而不僅僅是將文件託管在靜態的地方。我嘗試過使用請求庫,除此之外,它返回的文件是空的。Python - 從aspx網頁捕獲自動下載文件

這裏是我做了什麼:

url = 'http://aws.state.ak.us/ApocReports/CampaignDisclosure/CDExpenditures.aspx?exportAll=True&amp%3bexportFormat=CSV&amp%3bisExport=True%22+id%3d%22M_C_sCDTransactions_csfFilter_ExportDialog_hlAllCSV?exportAll=True&exportFormat=CSV&isExport=True' 


with open('CD_Transactions_02-27-2017.CSV', "wb") as file: 
    # get request 
    response = get(url) 
    # write to file 
    file.write(response.content) 

我敢肯定,我失去了一些東西很明顯,但我拉我的頭髮。

回答

0

它看起來像文件正在按需生成,並且只要會話持續,網址就保持有效。

從瀏覽器到Web服務器有多個請求(包括POST請求)。 所以要通過代碼來獲取這些文件,你必須模擬瀏覽器,可能包括會話狀態等(在這種情況下也是__VIEWSTATE)。

要查看整個通信,您可以在瀏覽器中使用開發人員工具(通常是F12,然後選擇NET查看通信量),或使用WireShark之​​類的東西。

換句話說,這不是一件容易的事。

如果這是開放的政府數據,最好向政府索要數據或要求直接鏈接到(未過濾的)文件(有時例如有一個公共的ftp服務器) - 或者有時候是一個可用的API。

+0

謝謝,丹尼。這是我害怕的答案。我會聯繫他們,看看會發生什麼。不幸的是,這看起來像是各州設立競選財務網站的常見方式。 –