CURLコマンドを使用して、次の場所(現在のFuelWatchRetail-03-2020.csv.zip)から最新のzipファイルをダウンロードしようとしています。このウェブサイト。
私の現在のコマンドは次のとおりです。
curl https://www.fuelwatch.wa.gov.au/fuelwatch/pages/public/historicalFileDownloadRetail.jspx#/FuelWatchRetail-03-2020.csv.zip -o new.zip
出力ファイルは最初のWebページのhtmlとして表示されます。ダウンロードしようとしているファイルの場所へのリンクが見つからないようです。解決策を見つけるためにGoogleで広く検索しましたが、正しいものを探していないようです。
答え1
開発者コンソールが起動された状態で通常のブラウザを使用してこのファイルを検索しようとすると、リンクをクリックするとHTTP POSTリクエストがトリガーされることがわかります。https://www.fuelwatch.wa.gov.au/fuelwatch/pages/public/historicalFileDownloadRetail.jspx次のパラメータを使用します。
{
"j_idt72":"j_idt72",
"j_idt72:resultsTbl_rppDD":"20",
"javax.faces.ViewState":"-4860850130551349268:6438609436745021067",
"j_idt72:resultsTbl:0:j_idt75":"j_idt72:resultsTbl:0:j_idt75"
}
その代価として要求されたファイルは添付ファイルとして提供されます。
{"headers":
[
{
"name":"Content-Disposition",
"value":"attachment;filename=\"FuelWatchRetail-03-2020.csv.zip\"; filename*=UTF-8''FuelWatchRetail-03-2020.csv.zip"
},
{
"name":"Content-Type","value":"application/pdf"},
[remaining data are useless for this explanation]
}
したがって、カールにいくつかの「ロジック」を実装しないと、必要なファイルを検索することは不可能です。 HTTP / HTML機能を持つスクリプト言語(Perl、Pythonなど)を使用してこれを行うのはあまり苦痛ではないかもしれません。