Еще раз здравствуйте друзья и коллеги. Все хорошего дня и замечательного здоровья. Помогите разобраться уже 2 день пытаюсь с чатом ГПТ на перелом найти решение простого вопроса.
Суть такая есть скрипт который должен брать код страницы интернет магазина проиводить выборку тегов с соотвествующим классом и брать их содержимое, заносить в свойства обьекта, который создаем уже в середине кода.
<?php
global $postCount;
include_once 'db.php';
include_once 'simple_html_dom.php';
function curlGetPage($url, $referer = 'https://google.com/')
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$response = curl_exec($ch);
return $response;
}
function parseAndInsertData($html)
{
global $db;
foreach ($html->find('*[class="col-6 col-lg-4 col-xl-3 us-item"]') as $element) {
$img = $element->find('*[class="img-fluid oct-lazy"]',0);
$link = $element->find('.us-module-img a', 0);
$priceElem = $element->find('*[class="us-module-price-actual"]',0);
$price = $priceElem->plaintext;
$priceJIS = float($price);
$post = [
'img' => $img->src,
'title' => $img->alt,
'link' => $link->href,
'price' => $price,
];
$priceN = isset($post['price']) ? floatval($post['price']) : 0;
// Используем подготовленные запросы для избежания SQL инъекций
$priceCH = floatval($price);
$db->query("INSERT IGNORE INTO posts (`title`, `img`, `link`, `price`)
VALUES('{$post['title']}', '{$post['img']}', '{$post['link']}', {$priceN})");
echo "Step cycle" . PHP_EOL;
$price = $priceElem->plaintext;
echo "Original price: " . $price . PHP_EOL;
$priceCH = floatval($price);
echo "Parsed price: " . $priceN . PHP_EOL;
}
}
//$page = curlGetPage('https://optitrade.dp.ua/zaryadni-prystroyi');
//$html = str_get_html($page);
$url = 'https://***/zaryadni-prystroyi?page=1';
$page = curlGetPage($url);
$html = str_get_html($page);
// Parse and insert data from the first page
parseAndInsertData($html);
$pagenavi = $html->find('.pagination');
$pageCount = count($pagenavi);
$postCount = 0;
for ($i = 2; $i <= $pageCount; $i++) {
// Set the correct referer for pagination
$referer = "https://***/zaryadni-prystroyi/?page=$i";
// Fetch the page content
$page = curlGetPage($referer, $referer);
$html = str_get_html($page);
// Parse and insert data from the current page
parseAndInsertData($html);
usleep(1500000);
// Optionally, you can add a limit to the number of pages to parse
if ($i > 100) {
break;
}
}
?>
Вопрос вот в чем как изменить код и значения переменных в которые есть обьекты?
$priceElem = $element->find('*[class="us-module-price-actual"]',0);
$price = $priceElem->plaintext;
$priceJIS = float($price);
Почему в запросе $db в базу данных попадает пустое значение 0 в поле `price`.