【问题标题】:Getting a file using curl or wget from command line doesn't work (in php it's working ....)从命令行使用 curl 或 wget 获取文件不起作用(在 php 中它正在工作....)
【发布时间】:2015-12-29 10:51:13
【问题描述】:

我使用的是 Ubuntu 15 ....

我需要下载这个开放数据 CSV http://www.sviluppoeconomico.gov.it/images/exportCSV/prezzo_alle_8.csv

从这个页面

http://www.sviluppoeconomico.gov.it/index.php/it/open-data/elenco-dataset/2032336-carburanti-prezzi-praticati-e-anagrafica-degli-impianti.

我想使用简单的 wget 或 curl 命令行,但如果我尝试一下

curl http://www.sviluppoeconomico.gov.it/images/exportCSV/prezzo_alle_8.csv pippo.csv

结果是

<html><head><title>Richiesta Rifiutata</title></head><body>La URL Richiesta e' stata riufiuta. Contattare l'amministratore di sistema.<br><br>The requested URL was rejected. Please consult with your administrator.<br><br></body></html>    
<html>
 <head><title>302 Found</title></head>
  <body bgcolor="white">
   <center><h1>302 Found</h1></center>
   <hr><center>nginx/1.4.6 (Ubuntu)</center>
  </body>
</html>

如果我使用相同的结果

wget http://www.sviluppoeconomico.gov.it/images/exportCSV/prezzo_alle_8.csv 

我尝试过使用简单的 php 程序

<?php
 $url = 'http://www.sviluppoeconomico.gov.it/images/exportCSV/prezzo_alle_8.csv';

 print $url;
 echo '<br>';
 echo '<br>';

 //#Set CURL parameters: pay attention to the PROXY config !!!!
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
 curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
 $data = curl_exec($ch);
 curl_close($ch);

 echo $data;
?>

在这种情况下,CSV 文件的数据会打印在我的浏览器页面上(我必须等待它,但它已打印出来......)。

所以,我认为应该可以从命令行使用 curl 或 wget 下载数据,并且可能有一些我应该设置的参数,但我现在没有解决方案......

有什么建议/例子吗?

提前谢谢你!!

切萨雷

【问题讨论】:

    标签: curl wget


    【解决方案1】:

    您需要在您的curl 命令中使用-L 开关,因为您在php 代码中使用curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 来跟踪重定向。

    关于这个-L开关的更多信息可以在这里找到:http://curl.haxx.se/docs/manpage.html#-L

    还使用以下选项覆盖默认 curl 用户代理字符串(即User-Agent: curl/7.40.0

     -A "Opera"
    

    对于wget 命令,为用户代理字符串添加以下开关。

    -U "Opera"
    

    【讨论】:

    • 我试过了,但它对我不起作用....你试过了吗?它对你有用吗?谢谢!!!
    • 我没试过。 curl 命令行默认添加类似curl/x.x.x 的用户代理字符串,并且可能被服务器拒绝。所以用-A "Opera"覆盖它,你应该没问题!
    • 好的,现在可以工作了......命令是...... curl -L -A "Opera" sviluppoeconomico.gov.it/images/exportCSV/prezzo_alle_8.csv > pippo.csv
    • @Sabui Hassan 你也有使用 wget 命令行的解决方案吗?
    • 是的。对于wget,您需要在命令中添加-U "Opera"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    相关资源
    最近更新 更多