Консультация № 191665
04.11.2017, 22:39
0.00 руб.
0 9 1
Здравствуйте! У меня возникли сложности с таким вопросом:

Помогите написать парсинг страницы(интернет магазин) с помощью регулярных выражений вытащить информацию (название товара, ссылку изображения и цену)

Заранее спасибо!

Обсуждение

давно
Посетитель
401437
4
04.11.2017, 22:39
общий
Забыл уточнить. На PHP
давно
Старший Модератор
312929
1973
05.11.2017, 02:10
общий
Адресаты:
Использование именно регулярных выражений обязательно? Дело в том, что для разбора (т.н.парсинга) документов HTML (и XML) уже давно используются специальные библиотеки PHP.
давно
Посетитель
401437
4
05.11.2017, 08:16
общий
Адресаты:
Да, именно с помощью регулярных выражений, т.к со встроенными(и сторонними) библиотеками я разобрался, а с регулярками у меня беда.
давно
Старший Модератор
312929
1973
06.11.2017, 19:19
общий
Адресаты:
Попробуйте вот такой код:
[code lang=php]<?php
$tools = array();
$html = file_get_contents("https://biggeek.ru/catalog/noutbuki-apple?page=1");
preg_match_all("|<div class="item-wrap">.+?<a.+?class="img">.+?<img src="(.+?)".+?>.+?</a>.+?<div class="item-info">.+?<a.+?>(.+?)</a>.+?<div class="price">.+?<ins>(.+?),-</ins>.+?</div>.+?</div>.+?</div>|s", $html, $tools, PREG_SET_ORDER);
?>[/code]
В результате его выполнения должен получиться двумерный массив, каждый подмассив которого содержит описание одного товара: элемент 1 - ссылку на изображение, элемент 2 - название, элемент 3 - цену, элемент 0 можно не использовать - он содержит исходный HTML-код (со всеми тегами), описывающий товар.
давно
Посетитель
401437
4
06.11.2017, 20:05
общий
Адресаты:
Спасибо! Сейчас решил выполнить скрипт, но у меня выводит почему-то пустой массив..
давно
Старший Модератор
312929
1973
07.11.2017, 01:15
общий
Адресаты:
А у Вас в php.ini опция allow_url_fopen включена? Если нет - включите (поставьте значение On). Если это невозможно, сохраните нужную страницу сайта в файл (в виде HTML-файла) и открывайте через file_get_contents его.
давно
Посетитель
401437
4
11.11.2017, 09:05
общий
Адресаты:
Спасибо большое!
Опция была включена, просто страницу в хроме закешировалась, из-за этого не выводилось нормально.
давно
Старший Модератор
312929
1973
12.11.2017, 20:07
общий
Адресаты:
То есть всё работает?
давно
Старший Модератор
312929
1973
14.11.2017, 17:54
общий
это ответ
Здравствуйте, xzibitcar1204!

Для парсинга страницы по указанному адресу можно использовать вот такой код:
[code lang=php]<?php
$tools = array();
$html = file_get_contents("https://biggeek.ru/catalog/noutbuki-apple?page=1");
preg_match_all("|<div class="item-wrap">.+?<a.+?class="img">.+?<img src="(.+?)".+?>.+?</a>.+?<div class="item-info">.+?<a.+?>(.+?)</a>.+?<div class="price">.+?<ins>(.+?),-</ins>.+?</div>.+?</div>.+?</div>|s", $html, $tools, PREG_SET_ORDER);
?>[/code]
В функции file_get_contents можно указать адрес страницы или файла с её содержимым. В результате получаем двумерный массив $tools, каждый подмассив которого содержит описание одного товара: элемент 0 - описывающий товар исходный HTML-код со всеми тегами (его можно не использовать), элемент 1 - ссылку на изображение, элемент 2 - название, элемент 3 - цену.
Форма ответа