Php 从动态上载内容的网站上删除产品图像url

Php 从动态上载内容的网站上删除产品图像url,php,ajax,curl,Php,Ajax,Curl,我无法刮取产品图像。我正在使用ajax。我的ajax文件是test.html,下面是我的代码:- $( "#click_me" ).click(function () { $.ajax({ url: "test.php", asyn:false, success: function(result){ console.log(result); }}); }); Test.php文件代码:- $url="http

我无法刮取产品图像。我正在使用ajax。我的ajax文件是test.html,下面是我的代码:-

$( "#click_me" ).click(function () {
     $.ajax({
        url: "test.php",
        asyn:false, 
        success: function(result){
         console.log(result);
    }});
});
Test.php文件代码:-

$url="http://www.kohls.com/catalog/bedroom-mattresses-accessories-furniture.jsp?CN=Room:Bedroom+Category:Mattresses%20%26%20Accessories+Department:Furniture&cc=bed_bath-TN3.0-S-mattresses";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 ");
$out = curl_exec($ch);
curl_close($ch);
$out = str_replace("\n", '', $out);
echo $out;
注意:请检查
$url
。图像正在动态填充,我们无法对其进行刮取。请我需要快速的指导,我也用蟒蛇来刮它们,但那没用!!!
谢谢

您需要从HTML中解析出图像。DOMDocument是一个很好的选择

示例代码(未经测试,但应在理论上可行)

如果需要curl,只需用curl函数替换file\u get\u内容即可
(这也是一个内存不足的问题,因为无论图像有多大,整个图像都将下载到ram中。使用curl,您可以使用CURLOPT_文件对其进行优化,以便直接写入文件。如果您想从NASA或类似机构下载图像,可以节省大量ram)

您需要从HTML中解析图像。DOMDocument是一个很好的选择

示例代码(未经测试,但应在理论上可行)

如果需要curl,只需用curl函数替换file\u get\u内容即可
(这也是一个内存不足的问题,因为无论图像有多大,整个图像都将下载到ram中。使用curl,您可以使用CURLOPT_文件对其进行优化,以便直接写入文件。如果您想从NASA或类似机构下载图像,可以节省大量ram)

不,问题是$html=FILE\u get\u contents($url);不会获取产品图像的html。因为“产品图片”是使用Ajax调用上传的,当我发送请求来刮取url时,它不会刮取产品html。所以根据你的逻辑,我只会陷入一个循环中,我可能永远不会得到图片的src。不,问题是$html=file\u get\u contents($url);不会获取产品图像的html。因为“产品图片”是使用Ajax调用上传的,当我发送请求来刮取url时,它不会刮取产品html。所以根据你的逻辑,我只会陷入一个循环,我可能永远不会得到图片的src。
$url="http://www.kohls.com/catalog/bedroom-mattresses-accessories-furniture.jsp?CN=Room:Bedroom+Category:Mattresses%20%26%20Accessories+Department:Furniture&cc=bed_bath-TN3.0-S-mattresses";

$html=file_get_contents($url);
$domd=@DOMDocument::loadHTML($html);
foreach($domd->getElementsByTagName("img") as $img){
$src=$img->getAttribute("src");
if(empty($src)){continue;}
$src='http://www.kohls.com'.$src;
$filename=basename($src);
echo "downloading ".$filename.PHP_EOL;
file_put_contents($filename,file_get_contents($src));
}