【问题标题】:Scrape product Image url from a website where content is uploading dynamiclly从内容动态加载的网站中抓取产品图片网址
【发布时间】:2017-04-13 05:49:36
【问题描述】:

我无法抓取产品图片。我正在使用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。图像是动态填充的,我们无法抓取它们。请我需要快速指导,我也使用过 pythonjs 来抓取它们,但是没有用!!! 谢谢!!!

【问题讨论】:

    标签: php ajax curl


    【解决方案1】:

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

    示例代码(未经测试,但理论上应该可以工作)

    $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));
    }
    

    如果你想要 curl,只需用你的 curl 函数替换 file_get_contents (这也是相当消耗内存的,因为无论它有多大,整个图像都会被下载到内存中。使用 curl,您可以使用 CURLOPT_FILE 对其进行优化以直接写入文件。如果您愿意,可以节省大量内存从 NASA 等下载图像)

    【讨论】:

    • 不是 $html=file_get_contents($url);不会获取产品图片的 html。因为“产品图片”是使用 Ajax 调用上传的,当我发送请求抓取 url 时,它永远不会抓取产品 html。所以根据你的逻辑,我只会陷入循环,我可能永远不会得到图片的 src。
    猜你喜欢
    • 2012-01-09
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 2022-11-12
    • 2020-04-06
    相关资源
    最近更新 更多