如何使用 wget 或 curl 从网页下载 php 生成的 csv 文件?

How to use wget or curl to download a php-generated csv file from a webpage?

我想下载一个 csv 文件,您可以从以下 public 页面下载:

https://www.historique-meteo.net/france/rh-ne-alpes/annecy-haute-savoie/2016/02/

在右上角,您会看到一个下载按钮“导出 CSV”,它将下载一些 csv 文件。 使用开发人员控制台查看代码,您会发现此按钮的 html 代码为

<a href="/site/export.php?ville_id=1025&amp;annee=2016&amp;mois=02" class="btn btn-small btn-theme pull-right">export CSV</a>

所以我尝试使用 curl/wget 下载 csv 文件,方法是尝试以下命令

curl "https://www.historique-meteo.net/site/export.php?ville_id=1025&annee=2016&mois=02"
wget "https://www.historique-meteo.net/site/export.php?ville_id=1025&annee=2016&mois=02"

但我没有得到 csv 文件。我得到一些 html 数据或 503 错误。

如何正确操作?

在浏览器中转到页面,单击Export CSV,通过 Cloudflare DDOS 保护屏幕,取消下载,然后返回页面。然后打开网络监视器选项卡(Ctrl+Shift+E 在 Firefox 中),然后再次单击 Export CSV。您应该会看到一个这样的 GET 请求

然后右键单击它 > 复制 > 复制为卷曲。这应该给你一个看起来像这样的请求

curl 'https://www.historique-meteo.net/site/export.php?ville_id=1025&annee=2016&mois=02' -H 'User-Agent: YourUA' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Accept-Language: en-US,en;q=0.5' --compressed -H 'Connection: keep-alive' -H 'Referer: https://www.historique-meteo.net/france/rh-ne-alpes/annecy-haute-savoie/2016/02/' -H 'Cookie: __cfduid=UID; cf_chl_2=CHL; cf_chl_prog=x19; cf_clearance=CLR' -H 'Upgrade-Insecure-Requests: 1' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache'

然后您可以使用它从您的终端下载 CSV 文件,无论他们将 cloudflare cookie 保存多长时间。使用 -o output.csv 保存文件。这不是 cloudflare 绕过,任何可疑活动都可能使 cookie 再次过期,但您可以做的另一件事是使用 selenium