не хватает фотографий с внешнего url php - PullRequest
0 голосов
/ 04 января 2012

Я использую серверную часть для получения фотографий с внешнего URL. Я использую простую библиотеку php dom для получения этого согласно предложению SO. Но мне не хватает производительности в этом. Я имею в виду, что для некоторых сайтов я не могу получить все фотографии. $ url имеет пример внешнего сайта, который не дает мне все изображения.

  $url
  ="http://www.target.com/c/baby-baby-bath-bath-safety
  /-/N-5xtji#?lnk=nav_t_spc_3_inc_1_1";
  $html = file_get_contents($url);
  $doc = new DOMDocument();
  @$doc->loadHTML($html);
  $tags = $doc->getElementsByTagName('img');

  foreach ($tags as $tag) {
      echo $imageUrl = $tag->getAttribute('src');
   echo "<br />";
  }

Возможно ли это, я могу иметь функциональность / точность, аналогичную опции Firefox

Firefox-> Инструменты -> Информация о странице -> Медиа

Я имею в виду, я просто хочу быть более точным, поскольку существующая библиотека не получает все изображения. Также я попытался file_get_content ..., который также не получает все изображения.

Ответы [ 2 ]

0 голосов
/ 04 января 2012

Загрузка изображений с удаленного сервера

function save_image($sourcePath,$targetPath)
  { 

      $in  = fopen($sourcePath, "rb");
      $out = fopen($targetPath, "wb");
      while ($chunk = fread($in,8192))
      {
          fwrite($out, $chunk, 8192);
      }
      fclose($in);
      fclose($out);
  }

$src = "http://www.example.com/thumbs/thumbs-t2/1/ts_11083.jpg"; //image source
$target = dirname(__FILE__)."/images/pic.jpg"; //where to save image with new name
save_image($src,$target);
0 голосов
/ 04 января 2012

Вам нужно использовать регулярные выражения для получения src изображений. DOMDocument построить всю структуру DOM в памяти, вам это не нужно. Когда вы получаете URL, используйте file_get_contents() и записывайте данные в файлы. Также добавьте max_execution_time, если вы проанализируете много страниц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...