这不是一个重复的问题。请仔细检查一下。我正在尝试保存http://www.nobroker.in上的图片。特别是来自:
对于上面的搜索查询,有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张以上的图片。
答案 0 :(得分:0)
我不知道您正在使用哪个PHP DOM库,但您目前正在寻找html img
元素:
$images = $dom->getElementsByTagName('img');
然而,您的屏幕截图仅包含a
元素。图像包含在其属性中。你需要相应地解析。