Парсинг php парсинг изображений

Парсинг PHP: Парсинг картинок

В этой записи я вам расскажу как легко можно спарсить изображения со стороннего сайта. Мы научимся парсить картинки и в конце я вам покажу готовый парсер для парсинга картинок.

Картинки парсить очень просто. Для этого нам нужно всего 2 функции file_get_contents(), которая нам уже известна и file_put_contents().

Внутри функции file_get_contents() прописываем адрес картинки. Для примера я возьму картинку из записи “Шпаргалка по Git. Основные Git команды” – http://prog-time.ru/shpargalka-po-git-osnovnye-git-komandy/

Для начала я просто нажму на нее правой кнопкой мыши и выберу “копировать адрес изображения”. Этот адрес мы вставляем в file_get_contents().

Для удобства запишем работу функции в переменную $img.

$img = file_get_contents('http://prog-time.ru/wp-content/uploads/2018/10/SHpargalka-po-git-720x414.jpg');

В функцию file_put_contents()передаем следующие параметры:

  • Первый параметр путь к файлу и его название. Например img/img1.jpg. Только сперва создайте директорию, так как если программа не найдет директорию, она выдаст ошибку.
  • Вторым параметром передаем данные которые будем записывать. У нас это переменная $img в которой хранится работа функции file_get_contents().

URL картинок

Для того чтобы добавить изображение, необходимо прописать тег img и и внутри атрибута src прописать путь к файлу.

Зная это мы с легкостью может сделать обратное, нам нужно достать из тега значение этого атрибута.

Важный момент:

  • Пути к файлу бывают 2 видов. Абсолютный и относительный.
  • Абсолютный путь имеет вид – http://prog-time.ru/wp-content/uploads/2018/10/SHpargalka-po-git-720×414.jpg. Такой путь путь имеет протокол и является полным, начинающимся от корня сайта.
  • Относительный путь имеет вид – /uploads/2018/10/SHpargalka-po-git-720×414.jpg . Относительный путь имеет только часть адреса, который может быть написан по разному.

Основные правила написания относительного пути:

Если мы находимся на странице http://prog-time.ru/wp-content/uploads/2018/10/index.php и хотим забрать картинку с адресом img.png. Полный адрес к изображению будет
http://prog-time.ru/wp-content/uploads/2018/10/img.png

Если мы находимся на странице http://prog-time.ru/wp-content/uploads/2018/10/index.php и хотим забрать картинку с адресом /img.png. Полный адрес к изображению будет
http://prog-time.ru/img.png. Знак слеша в адресе означает что путь начинается от корневой директории.

Если мы находимся на странице http://prog-time.ru/wp-content/uploads/2018/10/index.php и хотим забрать картинку с адресом images/img.png. Полный адрес к изображению будет
http://prog-time.ru/wp-content/uploads/2018/10/images/img.png.

Если мы находимся на странице http://prog-time.ru/wp-content/uploads/2018/10/index.php и хотим забрать картинку с адресом ../img.png. Полный адрес к изображению будет
http://prog-time.ru/wp-content/uploads/2018/10/img.png .
Если бы не было двух точек и слеша, путь был бы такой
http://prog-time.ru/wp-content/uploads/2018/10/img.png , но если их поставить, то они поднимают нас на папку выше и путь становится таким http://prog-time.ru/wp-content/uploads/2018/10/img.png .

Парсер картинок

Теперь давайте на основе полученных данных попробуем написать простой парсер картинок. Для написания парсера мы будем использовать знания которые получили в прошлых записях.

Для начала нужно прописать подключение к сайту. Для примера я буду использовать, все ту же страницу записи.

require_once 'phpquery-master/phpQuery/phpQuery.php';//подключаем библиотеку phpQuery
$url = 'http://prog-time.ru/shpargalka-po-git-osnovnye-git-komandy/';//URL записи

$curl = curl_init();//инициализация запроса
curl_setopt($curl, CURLOPT_URL, $url);//сюда передаем URL нашей страницы
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//записывать в переменную, а не выводить
$result = curl_exec($curl);//запрос и запись в переменную $result

После этого производим поиск нужного нам элемента.

$pq = phpQuery::newDocument($result);//создается объект в котором весь код страницы

$elem = $pq->find('.single-thumb img');//поиск элемента
$text = $elem->attr('src');//у найденного элемента вытаскиваем значение атрибута src

В конце нужно передать полученный адрес функцию file_get_contents() и сохранить найденное изображение, с помощью функции file_put_contents().

$img = file_get_contents($text);
file_put_contents('test_img.jpg', $img);

Парсинг изображения с относительным путем

Если изображение имеет относительный путь, зная правила, вы с легкостью можете создать отдельную строку и добавить недостающую часть к имеющемуся адресу. И в дальнейшем собранный адрес, вы можете использовать в моем, выше написанном, коде.

Полный код получившегося парсера:

require_once 'phpquery-master/phpQuery/phpQuery.php';//подключаем библиотеку phpQuery
$url = 'http://prog-time.ru/shpargalka-po-git-osnovnye-git-komandy/';//URL записи

$curl = curl_init();//инициализация запроса
curl_setopt($curl, CURLOPT_URL, $url);//сюда передаем URL нашей страницы
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//записывать в переменную, а не выводить
$result = curl_exec($curl);//запрос и запись в переменную $result

$pq = phpQuery::newDocument($result);//создается объект в котором весь код страницы

$elem = $pq->find('.single-thumb img');//поиск элемента
$text = $elem->attr('src');//у найденного элемента вытаскиваем значение атрибута src

$img = file_get_contents($text);
file_put_contents('test_img.jpg', $img);

На этом всё!
Если у вас есть вопросы, пишите их в нашей группе - https://vk.com/progtime
Вы так же можете разместить свой вопрос на нашем форуме, где другие программисты смогут вам помочь в решение вашей задачи - https://vk.com/prog_time
В ней мы делимся своим опытом с другими начинающими программистами, поэтому обязательно ответим на ваш вопрос.
Так же прокачивайте свои навыки на нашем канале - https://www.youtube.com/c/ProgTime

56
Оставить комментарий

avatar
56 Цепочка комментария
0 Ответы по цепочке
0 Последователи
 
Популярнейший комментарий
Цепочка актуального комментария
52 Авторы комментариев
ShannonviamyShannonviamyJeromepefJeromepefJeromepef Авторы недавних комментариев
  Подписаться  
новее старее большинство голосов
Уведомление о
BrayTix
Гость

Вашему вниманию предоставляется новая система распределения трафика – Real TDS.

Трекер облачный, что снимает надобность установки его на ваш сервер.

Детальная статистика в разрезе большого количества параметров, таких как: источники, площадки, контент, страны, операторы.
Автоматический расчет затрат и доходов будет удобен бля каждого арбитражника!

[urlcomment image[/img][/url]

Регистрация тут: >> [url=https://www.softtraf.ru]https://www.softtraf.ru[/url]

JanleF
Гость

Cialis Avis Consommateur [url=http://apcialisle.com/#]Buy Cialis[/url] Propecia Epididimitis Buy Cialis Canedian Pharmacy

JanleF
Гость

Cialis Fast Overnight [url=http://apcialisle.com/#]Buy Cialis[/url] Online Viagra No Prescription Cialis Cialiis Fake Companies

StepFoush
Гость

Acheter Du Viagra En Europe [url=http://apcialisle.com/#]Buy Cialis[/url] Clomid En Cas D Oubli cialis 20mg for sale Kamagra Oral Jelly 100mg Wiki

StepFoush
Гость

Drugstore Xenical [url=https://apcialisle.com/#]Cialis[/url] Order Priligy Dapoxetine Cialis Birth Control With Out A Perscription

JanleF
Гость

Cephalexin Used In Cats [url=https://cheapcialisir.com/#]cheapest cialis online[/url] Best On Line Pharmacy Cialis Cialis Pas Cher Pharmacie Paris

JanleF
Гость

Generic Viagra Canada [url=https://buycialisuss.com/#]Buy Cialis[/url] Online Phamaces cialis online generic Cialis Generique Andorre

RogelioCab
Гость
RogelioCab

viagra buy melbourne canadian pharmacy cheap viagra buy online

RobertCIP
Гость
RobertCIP

cialis cheapest lowest price cheap cialis order real cialis

WilliamAcurn
Гость
WilliamAcurn

cheapest cialis canada .com http://cialisxtl.com cialis buy paypal

Vernoncrott
Гость
Vernoncrott

order viagra by mail https://viagrawithoutdoctorspres.com cheap viagra sale

RobertIdeok
Гость
RobertIdeok

buy viagra qatar https://edpillsphrm.com buy cialis uk suppliers [url=https://edpillsphrm.com]canada ed drugs[/url] buy brand levitra

Elmerwah
Гость
Elmerwah

mail order cialis generic real viagra without a doctor prescription order generic viagra overnight

DonaldSeasy
Гость
DonaldSeasy

cialis generic cheapest http://hydroxychloroquine24.com – plaquenil generic viagra buy london

DonaldSeasy
Гость
DonaldSeasy

order viagra with mastercard http://hydroxychloroquine24.com – buy plaquenil cheap drugs viagra

DonaldSeasy
Гость
DonaldSeasy

viagra sale fast shipping http://aralenph.com – aralen cialis tadalafil 20mg tablets

DonaldSeasy
Гость
DonaldSeasy

buy cialis with money order http://kaletra24.com – buy kaletra online viagra online

DonaldSeasy
Гость
DonaldSeasy

order female cialis http://aralenph.com – alaren price cheap cialis eu

DonaldSeasy
Гость
DonaldSeasy

viagra cheap overnight http://alexa24ph.com – buy sildenafil viagra buy toronto

DonaldSeasy
Гость
DonaldSeasy

where to buy viagra http://tadal24ph.com – cialis generic viagra sale over counter

DonaldSeasy
Гость
DonaldSeasy

buy cialis super active online http://zithazi.com – buy Azithromycin cheapest cialis au

DonaldSeasy
Гость
DonaldSeasy

buy cialis manila http://alexa24ph.com – viagra online buy cialis online for cheap

DonaldSeasy
Гость
DonaldSeasy

buy viagra manila http://alexa24ph.com – cheap viagra buy viagra east london

DonaldSeasy
Гость
DonaldSeasy

can you order viagra online http://hydroxychloroquine24.com – generic plaquenil viagra sale johannesburg

DonaldSeasy
Гость
DonaldSeasy

buy cialis manila http://hydroxychloroquine24.com – plaquenil for sale buy levitra singapore

DonaldSeasy
Гость
DonaldSeasy

canadian pharmacy cheap cialis http://aralenph.com – buy chloroquine online viagra online order canada

VirgilGuipt
Гость
VirgilGuipt

cialis buy online generic
viagra online

VirgilGuipt
Гость
VirgilGuipt
VirgilGuipt
Гость
VirgilGuipt

order cialis no prescription
buy viagra

VirgilGuipt
Гость
VirgilGuipt

cheapest levitra 20mg
buy viagra

VirgilGuipt
Гость
VirgilGuipt

cheapest cialis canada .com
buy sildenafil

VirgilGuipt
Гость
VirgilGuipt

buy viagra online cheap uk
generic viagra 100mg

VirgilGuipt
Гость
VirgilGuipt

cialis pills for cheap
viagra without doctor prescription

VirgilGuipt
Гость
VirgilGuipt

order cialis professional
viagra pills

VirgilGuipt
Гость
VirgilGuipt

viagra price
what is viagra

VirgilGuipt
Гость
VirgilGuipt
VirgilGuipt
Гость
VirgilGuipt

order viagra pfizer online
viagra without doctor prescription

VirgilGuipt
Гость
VirgilGuipt
VirgilGuipt
Гость
VirgilGuipt

cheapest price on cialis
viagra without a doctor prescription

VirgilGuipt
Гость
VirgilGuipt

viagra walgreens
buy sildenafil

Donaldneeft
Гость
Donaldneeft

viagra problem viagra

Donaldneeft
Гость
Donaldneeft

п»їviagra cheap viagra

Herbertlep
Гость
Herbertlep

how long does it take cialis to take effect
http://tadalafilprof.com

Herbertlep
Гость
Herbertlep

cialis erections
http://tadalafilprof.com

Clintoncooth
Гость
Clintoncooth

online viagra viagra dosage recommendations
herbal viagra sale ireland

Clintoncooth
Гость
Clintoncooth

generic viagra without subscription walmart viagra prices
is it legal to order viagra online

Viagra Generic
Гость

trial samples of viagra viagrawithoutdoc viagra without a doctor prescription
cheapest cialis in canada

Viagra Generic
Гость

over counter viagra walgreens viagra
buy cialis canadian pharmacy

abakaro
Гость

Female Tadalis Sx Soft [url=https://cheapcialisir.com/]cialis generic tadalafil[/url] Priligy Farmacias Del Ahorro generic cialis no prescription Tadalafil 20mg India

JasonAroxy
Гость
JasonAroxy

prices of viagra at walmart viagra without doctor prescription amazon
onlinepharmacyero.com