如何使用php从网站的url下载pdf文件

时间:2017-12-12 15:03:23

标签: php pdf

我正在尝试制作一个软件,它将获取用户关键字并在谷歌上搜索,找到所有包含该文字的pdf文件的网站并下载它们。 我能够获得关于关键字的谷歌搜索结果的HTML,但这些HTML链接没有任何用处,我无法从他们下载PDF文件。

<?php
if(isset($_POST['submit'])){

    $endpoint =$_POST['info'];
    $endpoint = str_replace(' ', '+', $endpoint);
    $endpoint= $endpoint.'+pdf';
    $page = file_get_contents('https://www.google.com.pk/search?dcr=0&source=hp&q='.$endpoint.'&oq='.$endpoint.'&gs_l=psy-ab.3..35i39k1l2j0j0i131k1j0l3j0i131k1j0l2.73519.74668.0.75122.9.7.0.0.0.0.424.424.4-1.1.0....0...1.1.64.psy-ab..8.1.422.0...0.U3V3CxpsqhA');

    $dom = new DOMDocument;

    @$dom->loadHTML($page);

    $links = $dom->getElementsByTagName('a');
    foreach ($links as $link){
        echo $link->nodeValue;
        echo $link->getAttribute('href'), '<br>';
    }

}
?>

这是我必须获得谷歌搜索结果的HTML。我有点被困在这里,请指导我现在应该做什么。

2 个答案:

答案 0 :(得分:0)

尝试使用file_put_contentsfopen

$url = 'http:// ... ';
file_put_contents('file.pdf', fopen($url, 'r'));

答案 1 :(得分:0)

我认为您应该使用正确的标题在您刚抓取的链接上请求该文件:

<?php 
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename='downloaded.pdf'");

或使用cURL。 请注意,header()必须在任何其他输出之前调用,因此您可以分两步/三步划分您的应用流程:

  1. Google关键字
  2. 向用户显示可能的匹配列表
  3. 让用户选择下载哪一个(并使用内容类型标题启动请求)
  4. 检查另一个答案:https://stackoverflow.com/a/20080402/3279175