使用curl下载页面而不下载图像文件或css或javascript


downloading a page without downloading image files or css or javascript with curl

每当我使用curl(php)下载页面时,它都会下载页面上的所有内容,如images, css files or javascript files。但有时我不想下载这些。我可以控制通过curl下载的资源吗。我已经看了手册,但我还没有找到一个可以实现这一点的选项?请不要建议获得整个页面,然后使用一些regex魔术,因为这仍然会下载页面并增加加载时间。这是一个演示代码,我从mozilla.com 下载了一个页面

<?php
$url="http://www.mozilla.com/en-US/firefox/new/";
$userAgent="Mozilla/5.0 (Windows NT 5.1; rv:2.0)Gecko/20100101 Firefox/4.0";
//$accept="text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
$encoding="gzip, deflate";
$header['lang']="en-us,en;q=0.5";
$header['charset']="ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header['conn']="keep-alive";
$header['keep-alive']=115;
$ch=curl_init();
curl_setopt($ch,CURLOPT_USERAGENT,$userAgent);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_ENCODING,$encoding);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_AUTOREFERER,1);
$content=curl_exec($ch);
curl_close($ch);
echo $content;
?>

当我回显内容时,它也会显示图像。我在firebug's network tab中看到图像和external js文件正在下载

PHP的curl只获取您告诉它的内容。它不会解析html来查找javascript/css <link>标签和<img>标签,也不会自动获取它们。

如果你让curl下载这些资源,那么是你的代码告诉它这样做,由你来决定取什么和不取什么。curl只做你告诉它的事情。

您可以使用来避免下载

echo htmlentities($content);