Изучаю написание парсера контента, остановился на библиотеке DiDOM.
Получается спарсить нужную информацию с одной страницы:
require_once('vendor/autoload.php');
use DiDom\Document;
$document = new Document('https://site.ru/catalog/tovar/', true);
//Находим заголовок
$main_heading = $document->find('.product-title h1')[0];
echo $main_heading->html();
//Находим цену
$price = $document->find('.item_current_price')[0];
$price->text();
//Находим фото
$foto = $document->find('.bx_bigimages_imgcontainer img')[0];
С одной страницой в целом все понятно. Но, никак не могу понять логику обхода и получения контента с большого количества страниц. Как это в принципе делается?
Парсер должен находить дочерние страницы по ссылкам в каталоге товаров (к примеру), или получать ссылки их XML карты сайта, или еще каким то образом выгружать список ссылок и потом идти по ним, находя там заданную информацию?
Просьба натолкнуть на мысль, пожалуйста.
Как то раз мне нужно было парсит IP для мониторинга игровых серверов. Там ссылки выглядели так:
site.ru/page?page=1 - Тут 50 серверов
site.ru/page?page=2 - Тут 50 серверов
site.ru/page?page=3 - Тут 50 серверов
Я сделал просто цикл for:
for ($i = 0; $i < 10; $i++) {
$url = "site.ru/page?page=$i";
#Тут идет код парсинга
}
Где 10 это количество страниц.
В итоге получился такой вариант (минимальный основополагающий код, который можно и нужно модернизировать)
<?php
// Здесь нужно подключить API своей системы, если файл внешний
require_once('vendor/autoload.php');
use DiDom\Document;
//Получаем каталог с товарами
$document = new Document('http://site.ru/catalog/', true);
//Находим ссылку по которой будем переходить на товар
$links = $document->find('a.startshop-name');
//Создаем цикл
foreach ($links as $key => $value)
{
//Получаем и проходимся в цикле по всем url товаров, что идет после site.ru/catalog
$dodo = $value->getAttribute('href');
//Подставляем массив ссылок для перебора
$massa = "http://site.ru/$dodo";
$document = new Document($massa, true);
//Находим H1 на страницах
$main_heading = $document->find('h1')[0];
//Находим фото
$foto = $document->find('#slider_images a::attr(href)')[0];
// Здесь создаем новый ресурс через API вашей системы с поставлением полученных данных
Виртуальный выделенный сервер (VDS) становится отличным выбором
На странице есть иконки в формате SVGСами иконки нарисованы в черном цвете
Итак, у нас есть математический маятникПомогите реализовать, чтобы после запуска программы можно было в ручную (мышкой) поднять шар и отпустить...
Нужно чтобы при нажатии на цифры, выделенные красным, менялся контент, выделенный зеленымТолько начинаю свой путь в верстке, подскажите с помощью...
Задумал написать расширение для twitch бота - общение с Алисой в текстовом виде