定期从使用php的网页下载csv文件的脚本

时间:2018-08-04 09:18:55

标签: php

我不确定这是否可行,但是我想编写一个脚本(可以是bash,python等),该脚本可以从使用PHP的网页上自动下载csv文件(对此我一无所知)。该网页是一种区域天气服务:http://www.meteo.fvg.it/archivio.php?ln=&p=dati 通常,我可以通过以下方式获得CSV文件:手动从下拉栏中单击一个工作站,单击“每日”,单击“可视化数据”,然后最后单击“下载CSV” ...

2 个答案:

答案 0 :(得分:1)

该网站使用以下表单字段向http://www.meteo.fvg.it/ajax/getStationData.php发送ajax POST请求:

a: 2018
m: 8
g: 4
s: CMT@Camino@syn@45.920300@12.938600@30
t: H_2
ln: 
o: visualizza

并返回一个html页面,其中可下载的CSV数据被奇怪地直接编码为下载按钮的href属性:

<a href=\"data:application\/csv;charset=utf-8,giorno%3Bora%20UTC%2A%3BPioggia%20mm%3BTemp.%20gradi%20C%3BUmidita%27%20%25%3BVento%20med%20km%2...">

因此,为了以编程方式解决该问题,您必须检出Chrome Dev Tools中的“网络”标签,并熟悉随ajax请求一起发送的字段及其参数。 然后使用curl来获取结果,就像这样(只是从网络标签中复制出来)Info

curl 'http://www.meteo.fvg.it/ajax/getStationData.php' -H 'Cookie: PHPSESSID=olng2rqoia3qsecangkh3bg4r4' -H 'Origin: http://www.meteo.fvg.it' -H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en-US,en;q=0.9,de;q=0.8' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.23 Safari/537.36' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Referer: http://www.meteo.fvg.it/archivio.php?ln=&p=dati' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' -H 'DNT: 1' --data 'a=2018&m=8&g=4&s=CMT%40Camino%40syn%4045.920300%4012.938600%4030&t=H_2&ln=&o=visualizza' --compressed

然后使用dom解析器解析结果,以获取下载按钮的内容

然后对其进行url_decode并保存。

您可以为此使用php,python,node.js-您更熟悉的内容。

也许,如果您进一步窥探一下,您会发现一个静态网址,可以直接为您提供结果。

答案 1 :(得分:0)

查看从何处下载文件(例如,浏览器中的网络控制台)或下载源。然后使用php中的file_get_contents下载。

如果文件名更改,请尝试找出模式。也许只是约会。