Собственно в прошлой статье мы с вами успешно завершили ту часть программного кода, которая отвечает непосредственно за парсинг и автоматическую отправку поискового запроса в Google.Картинки. Однако мало получить ссылки на оригинальные изображения с донорских сайтов, их же ещё нужно скачать и где-то сохранить.
Для решения задачи напишем небольшую функцию с применением cURL:
/** * Получая путь до картинки $image_url, * сохраняет её в каталог $destination_url, * "шифруя" имя файла с помощью MD5. * * @param string $image_url * @param string $destination_url */ function save_image($image_url, $destination_url) { $path_parts = pathinfo($image_url); $filename = md5($path_parts['filename']) . '.' . $path_parts['extension']; $destination_url = $destination_url . $filename; $YUghYu = curl_init($image_url); curl_setopt($YUghYu, CURLOPT_HEADER, 0); curl_setopt($YUghYu, CURLOPT_RETURNTRANSFER, 1); curl_setopt($YUghYu, CURLOPT_BINARYTRANSFER, 1); curl_setopt($YUghYu, CURLOPT_REFERER, 'http://google.ru'); curl_setopt($YUghYu, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($YUghYu, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0" . "; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR" . " 3.0.04506.30)"); $img = curl_exec($YUghYu); curl_close($YUghYu); unset($YUghYu); // Сохраняем картинку: if (file_exists($destination_url)) unlink($destination_url); $f = fopen($destination_url, 'x'); fwrite($f, $img); fclose($f); // Возвращаем новый путь: return $destination_url; }
И вставим её вызов в имеющийся программный код:
$content = turn_to_google('MODX Revolution'); $folder = dirname(__FILE__) . '\\images\\'; $content = str_get_html($content); $images = $content->find('#ires td a'); foreach ($images as $url) : parse_str(parse_url($url->href, PHP_URL_QUERY), $image_content); echo save_image($image_content['imgurl'], $folder) . "<br />\n"; endforeach; $content->clear();Скачать рабочий пример
* * *
1. Будете много парсить и вылетит… Нет, не птичка, а капча. Её преодоление выходит за рамки представленных статей.
2. Предостерегаю. На дворе 2013-й год и не так уж давно вышел у Яндекса АГС-40, а потому лучше даже не пытайтесь делать конвейерные ГСы, а то из таких, как вы часто общим скопом под фильтры попадают вполне нормальные СДЛы с написанными вручную материалами, уникальным дизайном и развиваемые авторами годами.
3. Скопируете мой сайт без моего ведома, — найду, и сделаю все, чтобы к вам в гости заглянул АГС.
Уже не работает! Создается пустой файл с нулевым размером — d41d8cd98f00b204e9800998ecf8427e и все
Видимо Гугл просто верстку подкорректировал или что-то в этом роде, т.к. https://www.google.ru/search?q=yandex&tbm=isch по-прежнему работает. Поэксперементируйте с селекторами simple_html_dom, например
$content->find('#ires td a');
.