如何从链接下载文件?

时间:2012-02-06 07:48:26

标签: php download web-crawler

我使用此代码搜索网站上的链接。

<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://example.com");
curl_setopt($ch, CURLOPT_TIMEOUT, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);

// search the results from the starting site
if( $result ){
   preg_match_all('/<a href="(http:\/\/www.[^0-9]+.pdf?)"/', $result, $output, PREG_SET_ORDER );
     foreach($output as $item  ){ 
        print_r($item );
      }
}
copy($item, 'file.pdf');
?>

只有一个pdf链接。然后我需要一个代码来下载PHP中的链接提供的pdf文件。复制功能不起作用。 谢谢你:))

2 个答案:

答案 0 :(得分:1)

这里有两个问题:

  1. 您只在foreach循环内打印,而不是保存任何内容。
  2. 您正在使用copy()函数和静态文件名file.pdf
  3. 您可能希望保存foreach循环中的所有文件,并使用相同的名称或随机的东西(否则,每个保存操作都会覆盖之前的file.pdf),如下所示:

    // Set your save path here
    $path = '/home/igos/pdfs/';
    
    foreach($output as $item){ 
        copy($item, $path . basename($item));
      }
    

    这将保存所有文件,将其原始文件名保存到/home/igos/pdfs/文件夹。

答案 1 :(得分:1)

我已经使用此代码解决了它,感谢@Oldskool :):

<?php
set_time_limit(0);
include 'simple_html_dom.php';
$url='example.com';
//set your save path here
$path = '/home/igos/pdfs/';

$html = file_get_html($url) or die ('invalid url');
foreach($html->find('a') as $e) {
     $link= $e->href;
     if (preg_match('/\.pdf$/i', $link)) {
          $result[] = $link;
          copy($link, $path . basename($link));
     }
}

?>