Php парсер картинок з сайту

Php парсер картинок з сайту

Розглянемо деталі роботи парсера фото або картинок з сайту. Фото будуть скачиваться і зберігатися на ваш комп'ютер або сервер, на якому запускається PHP скрипт парсеру. Завантажувати будемо картинки з картки товару інтернет-магазину gearbest.com.

Для початку потрібно зібрати URL фото товарів з HTML коду картки товару.

Php парсер картинок з сайту

Для цього можна застосувати простий парсер HTML, який розглядався в першій статті циклу.

Після отримання списку посилань на фото товару ми завантажуємо самі картинки за допомогою тієї ж функції отримання даних від сервера на основі cURL. Можна було б навіть скористатися стандартною функцією PHP file_get_contents (). Але в нашій функції curl_get_contents () реалізована можливість повторної спроби завантажити файл і пауза між запитами до сервера. Це буває корисно, коли трапляються сайти з захистом від множинних завантажень або просто слабкі сервера, які не витримують підвищені навантаження.

Php парсер картинок з сайту

Парсер фото товару з сайту

В результаті отримуємо простий парсер фото товарів з сайту на прикладі gearbest.com. Код парсеру розміщений в одному файлі, частина можливих помилок не обробляється для стислості коду.

Вихідний код index.php:

Розглянемо основні особливості. Парсер збирає фото з однієї картки товару. Але нам нічого не заважає при необхідності додати ще один цикл і Спарс картинки за списком сторінок.

Зверніть увагу на функцію preg_match_all (). вона повертає масив відповідностей регулярному виразу. У цьому її основна відмінність від функції preg_match (). яка працює до першого збігу.

За допомогою вбудованої в PHP функції file_put_contents () можна зберегти фото на свій сервер по потрібному шляху. Відповідно попередньо ми перевіряємо наявність потрібного нам каталогу і при його відсутності створюємо його.

Також при спробі дістати з URL фото ім'я файлу я показав приклад роботи з PHP функціями обробки рядків mb_strpos () і mb_substr (). Ними корисно користуватися в якості альтернативи регулярними виразами, працюють швидше. Префікс mb_ вказує на те, що дані функції коректно працюють з багатобайтові кодуваннями, зокрема з рядками російською мовою.

В результаті роботи парсера отримуємо список фото на своєму жорсткому диску в заданій папці і з заданими іменами файлів.

Звичайно, можна було б організувати парсер по AJAX технології. але у застосованого підходу є свої плюси. Наприклад, при великій кількості картинок і тривалій роботі парсеру нам без потреби тримання вкладку браузера відкритою. PHP скрипт зможе довго працювати на сервері і зберігати картинки в потрібну директорію. При цьому, правда, ми не побачимо результати виконання скрипта. Але то ж закінчення роботи парсера можна буде помітити по припиненню створення нових файлів з фото.

Схожі статті