我正在尝试制作一个软件,它将获取用户关键字并在谷歌上搜索,找到所有包含该文字的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。我有点被困在这里,请指导我现在应该做什么。
答案 0 :(得分:0)
尝试使用file_put_contents和fopen:
$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()
必须在任何其他输出之前调用,因此您可以分两步/三步划分您的应用流程: