如何在所有情况下从网页获取所有图像


How to get all images from a webpage in all cases?

我使用这个脚本从一个通用的外部网页获取所有图像:

$url = ANY URL HERE;
$html = @file_get_contents($url,false,$context);
$dom = new domDocument;
@$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
 echo $image->getAttribute('src');
}

但在某些类似情况下(图像位于"rel:image_src"中)

<img src="http://example.com/example.png" rel:image_src="http://example.com/dir/me.jpg"  />

它不起作用。

我该怎么办?

您可以同时包含以下两者:

foreach ($images as $image) {
  echo $image->getAttribute('src');
  echo $image->getAttribute('rel:image_src');
}

检查节点是否具有属性rel:image_src

foreach ($images as $image) {
  if( $image->hasAttribute('rel:image_src') ) {
     echo $image->getAttribute('rel:image_src');
  } else {
     echo $image->getAttribute('src');
  }
}

如果您希望rel:image_src获得精度,请检查属性的存在并选择性地使用它:

$url  = ANY URL HERE;
$html = @file_get_contents($url,false,$context);
$dom  = new domDocument;
@$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');
foreach ($images as $image) {
  if ($image->hasAttribute('rel:image_src')
  {
    echo $image->getAttribute('rel:image_src');
  }
  else
  {
    echo $image->getAttribute('src');
  }
}