我不确定这是否可行,但是我想编写一个脚本(可以是bash,python等),该脚本可以从使用PHP的网页上自动下载csv文件(对此我一无所知)。该网页是一种区域天气服务:http://www.meteo.fvg.it/archivio.php?ln=&p=dati 通常,我可以通过以下方式获得CSV文件:手动从下拉栏中单击一个工作站,单击“每日”,单击“可视化数据”,然后最后单击“下载CSV” ...
答案 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
下载。
如果文件名更改,请尝试找出模式。也许只是约会。