Пытаюсь спарсить цену с сайта (по class="detail-price-uah"
), но она грузится не на все указанные товары, то есть к одним товарам грузится к другим нет. И с каждым запуском меняется, то есть сейчас у этого товара цена подгрузилась, перезапустил парсер, уже у него цены нет, но есть у другого товара.
На сколько я понял цена на сайте исходнике подгружается из скрипта, но рядом лежит <meta itemprop="price" content="399">
Здесь значение content="399"
и есть нужная мне цена, то есть "399".
Но добраться до этого content
я никак не могу. Как это можно сделать? Или как можно подгрузить данные прямо из скрипта?
Видел что вроде бы можно как то регуляркой все что нужно вытянуть, но никак пока не пойму как ее написать.
Возможно задаю глупые вопросы, я только начинаю изучать это все.
Мой код парсера:
<?php
header('Content-Type: text/html; charset=utf-8');
include_once('lib/curl_queri.php');
include_once('lib/simple_html_dom.php');
$html = curl_get('https://rozetka.com.ua/uslugi/c153670/'); //подключаюсь к сайту донору
$dom = str_get_html($html); //получаю код страницы
$services = $dom->find('.g-i-tile-i-title'); //ищу на странице товары (сервисы)
foreach($services as $service){
$a = $service->find('a', 0); //сохраняю ссылки на сервисы
$one = curl_get($a->href); //перехожу на страницу по сохраненной ссылке
$one_dom = str_get_html($one); //получаю код страницы
$price = $one_dom->find('.detail-price-uah'); //ищу на странице цену по классу
echo $price . ' --- ' . $a->href . '<br>'; //вывожу цены и ссылки на сервисы
}
?>
Если мой коммент к вопросу расписать более подробно, то получается нечто вроде такого.
$content = file_get_contents("https://rozetka.com.ua/uslugi/c153670/");
$html = str_get_html($content);
$result = [];
$items = $html->find(".g-i-tile-i-box-desc");
foreach($items as $item){
$href = $item->find(".g-i-tile-i-title a", 0)->href;
$price = null;
$script = $item->find('script', 0)->innertext;
if(preg_match("/pricerawjson\\s=\\s'(.*?)'/", $script, $matches)){
$json = urldecode($matches[1]);
$data = json_decode($json, true);
$price = $data['price'];
}
$result[] = ['href' => $href, 'price' => $price];
}
print_r($result);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вроде бы изначально казалось что простое задание, но почему-то не получается добиться оптимального результата
Почему алгоритм std::count() возвращает difference_type, ведь это знаковое число, а количество вхождений чего-то во что-то может быть 0+, те