Как можно быстро запарсить более 1000 картинок с сайта?

Необходимо запарсить более 1000 картинок с сайта. На данный момент использую simple html dom, что вообще не получается запарсить сайт. Подскажите как можно это сделать, если не simple html dom, то может какой-нибудь другой парсер.
  • Вопрос задан
  • 9957 просмотров
Пригласить эксперта
Ответы на вопрос 5
Советую библиотеку PHPQuery, в ней нету таких глюков, как simple html dom (я пробовал и тм и тем, но понравилась именно phpquery).

Ссылки на уроки:
habrahabr.ru/post/69149
i-novice.net/parsim-sajty-s-phpquery

Недавно как раз и парсил картинки этой библиотекой и она очень хорошо справилась

Для того, что бы сохранить конкретно картинку, то надо при помощи библиотеки найти ссылки на картинки, я искал на странице и помещал все найденные ссылки в массив, пример кода:
$model_page_url = file_get_contents($page);  //Получаем всю страницу
  $model_page = phpQuery::newDocument($model_page_url); //Создаём объект страницы библиотекой
  $images_link = $model_page->find('img'); //Ищем все теги img
  foreach ($images_link as $image_link) {
    $images[] = pq($image_link)->attr('src'); //В цикле помещаем ссылку на картинку в массив
  }


Затем примерно так:
foreach($images as $image){
        $image_name = basename($image); //Определяем имя и расширение картинки
        if(!file_exists('img/'.$image_name)){ //Проверяем нет ли такой картинки
          file_put_contents('img/'.$image_name, file_get_contents($image)); //через file_get_contents($image) получаем картинку по ссылке и file_put_contents кладём её в нужную нам папку
        }else{
          continue;
        }
      }


Весь примерный процесс парсинга изображений
Ответ написан
@eandr_67
web-программист (*AMP, Go, JavaScript, вёрстка).
MetaProducts Offline Explorer
Ответ написан
Комментировать
SimpleHTMLDOM отличная библеотека, очень проста в использовании, принцип работы очень похож на jQuery ну или на CSS селекторы.

Ниже код демонстрирующий загрузку картинок с сайта дистрибьютора merlion:
<?
$simple = file_get_html('http://merlion.com/catalog/product/966656');
foreach ($simple->find('div.ad-thumbs .ad-thumb-list li a') as $el){
    echo $el->href.'<br>';
}


Результат:
http://img.merlion.ru/items/966656_v01_m.jpg
http://img.merlion.ru/items/966656_v02_m.jpg
http://img.merlion.ru/items/966656_v03_m.jpg
http://img.merlion.ru/items/966656_v04_m.jpg
http://img.merlion.ru/items/966656_v05_m.jpg


Использую библиотеку для парсинга 24/7 (круглосуточно) картинок и описание товаров с различных сайтов, товаров более 50 тыс, справляется.
Ответ написан
@Vadim997 Автор вопроса
Может есть какое-нибудь другое решение?
Ответ написан
Комментировать
@DimaX
Если нужно разово, то может проще использовать уже готовый велосипед - парсер картинок, чем изобретать свой :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы