Ich versuche, mit dem CURL-Befehl die neueste Zip-Datei (derzeit ist es FuelWatchRetail-03-2020.csv.zip) herunterzuladen vonDiese Seite.
Der Befehl, den ich derzeit habe, lautet wie folgt:
curl https://www.fuelwatch.wa.gov.au/fuelwatch/pages/public/historicalFileDownloadRetail.jspx#/FuelWatchRetail-03-2020.csv.zip -o new.zip
Die ausgegebene Datei scheint das HTML der ursprünglichen Webseite zu sein. Ich kann anscheinend keinen Link zum Speicherort der Datei finden, die ich herunterladen möchte. Ich habe ausgiebig gegoogelt, um eine Lösung zu finden, aber ich suche offensichtlich nicht nach dem Richtigen.
Antwort1
Wenn Sie versuchen, diese Datei mit einem normalen Browser und geöffneter Entwicklerkonsole abzurufen, werden Sie feststellen, dass beim Klicken auf den "Link" eine HTTP-POST-Anforderung ausgelöst wird, umhttps://www.fuelwatch.wa.gov.au/fuelwatch/pages/public/historicalFileDownloadRetail.jspxmit folgenden Parametern:
{
"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"
}
Im Gegenzug wird die angeforderte Datei als Anhang mitgeliefert:
{"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]
}
Es ist also ziemlich unmöglich, die gewünschte Datei abzurufen, ohne ein bisschen „Logik“ um curl herum zu implementieren. Es wird wahrscheinlich weniger schmerzhaft sein, dies mit einer Skriptsprache mit HTTP/HTML-Fähigkeiten wie Perl, Python usw. zu implementieren.