Я пытаюсь использовать команду CURL для загрузки последнего zip-файла (на сегодняшний день это FuelWatchRetail-03-2020.csv.zip) с сайтаэтот сайт.
На данный момент у меня следующая команда:
curl https://www.fuelwatch.wa.gov.au/fuelwatch/pages/public/historicalFileDownloadRetail.jspx#/FuelWatchRetail-03-2020.csv.zip -o new.zip
Файл, который выводится, похоже, является html с исходной веб-страницы. Я не могу найти ссылку на местоположение файла, который я пытаюсь загрузить. Я много гуглил, чтобы найти решение, однако я, очевидно, ищу не то, что нужно.
решение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]
}
Так что совершенно невозможно получить нужный файл без реализации некоторой "логики" вокруг curl. Вероятно, будет менее болезненно реализовать это с помощью скриптового языка с возможностями HTTP/HTML, такого как Perl, Python и т. д.