需要帮助将网址中存在的所有图像保存到文件夹

时间:2016-12-24 16:41:45

标签: php curl

这不是一个重复的问题。请仔细检查一下。我正在尝试保存http://www.nobroker.in上的图片。特别是来自:

  

https://www.nobroker.in/property/rent/bangalore/Koramangala?nbPlace=ChIJLfyY2E4UrjsRVq4AjI7zgRY&lat_lng=12.9279232,77.62710779999998&radius=1.0&sharedAccomodation=0&orderBy=nbRank,desc&radius=1&pageNo=1

对于上面的搜索查询,有1到18的paages。我想从1号到18号的图像下载到一个文件夹。我写了下面的脚本:

<?php

function scrapeImages($base,$html) 
{
    $dom = new domDocument;
    @$dom->loadHTML($html);

    //find all the images in the HTML
    $images = $dom->getElementsByTagName('img');
    $imgArray = array();

    //for each image tag, grab its src attribute and add it to the array
    $i=0;
    foreach ($images as $image) {
        echo $base.$image->getAttribute('src').'<br>';
        urltoimage($base.$image->getAttribute('src'));
        $i++;
    }

    return $i;
}

function urltoimage($image_link)
{
    //echo $image_link; die;
    if (@getimagesize($image_link)) {
        //$image_link ="https://www.dropbox.com/s/pt4wu5if3kwufr2/310890.jpg";
        $no = mt_rand(10000000, 99999999);
        $rand = $no."test".time();

        $split_image = pathinfo($image_link);

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL , $image_link);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);
        $response = curl_exec ($ch);
        curl_close($ch);
        $updir= 'img';
        $filename= $rand.".jpg";
        $file_name = $updir.'/'.$filename;

        $file = fopen($file_name , 'w') or die("X_x");
        fwrite($file, $response);
        fclose($file);

        return $file_name;
    } else {
        return  'error';
    }
}

$base = 'https://www.nobroker.in/property/ajax/rent/';
$url = 'https://www.nobroker.in/property/rent/bangalore/Koramangala?nbPlace=ChIJLfyY2E4UrjsRVq4AjI7zgRY&lat_lng=12.9279232,77.62710779999998&radius=1.0&sharedAccomodation=0&orderBy=nbRank,desc&radius=1&pageNo=1'; 
$images1 = scrapeImages($base,file_get_contents($url));
echo $images1 .' Images found';

但只获得2张图片,而不是100张以上的图片。

1 个答案:

答案 0 :(得分:0)

我不知道您正在使用哪个PHP DOM库,但您目前正在寻找html img元素:

$images = $dom->getElementsByTagName('img');

然而,您的屏幕截图仅包含a元素。图像包含在其属性中。你需要相应地解析。