setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); log_message("Успешное подключение к базе данных '$dbname'."); } catch (PDOException $e) { log_message("Ошибка подключения к базе данных: " . $e->getMessage()); die("Ошибка подключения: " . $e->getMessage()); } // Запрос на получение данных из таблицы project $query = "SELECT * FROM project WHERE status IN ('представительство в суде 1й инстанции', 'апелляция', 'кассация') LIMIT 7"; $stmt = $pdo->prepare($query); $stmt->execute(); $results = $stmt->fetchAll(PDO::FETCH_ASSOC); log_message("Всего записей в таблице project: " . count($results)); if (count($results) === 0) { log_message("Нет записей для парсинга."); echo "

Нет записей для парсинга.

"; } else { foreach ($results as $row) { $status = $row['status']; $case_number = $row['case_number']; $uid = $row['uid']; $link = ''; // Определяем, какую ссылку использовать для парсинга if ($status === 'представительство в суде 1й инстанции') { $link = $row['link1']; } elseif ($status === 'апелляция') { $link = $row['link2']; } elseif ($status === 'кассация') { $link = $row['link3']; } log_message("Парсим данные из ссылки: $link для дела: $case_number"); // Загружаем HTML-контент страницы дела $html = @file_get_contents($link); if ($html === false) { log_message("Ошибка: не удалось загрузить страницу по ссылке: $link"); continue; } log_message("Страница успешно загружена. Начинаем парсинг..."); // Парсим HTML с помощью DOMDocument и XPath $dom = new DOMDocument(); @$dom->loadHTML($html); $xpath = new DOMXPath($dom); // Определяем div для парсинга $div_id = ($status === 'представительство в суде 1й инстанции') ? 'cont2' : 'cont3'; $rows = $xpath->query("//div[@id='$div_id']//tr"); log_message("Найдено строк (tr) в div с id '$div_id': " . $rows->length); // Обрабатываем каждую строку таблицы foreach ($rows as $row) { $event_name = $xpath->query('./td[1]', $row)->item(0)->nodeValue ?? 'Не указано'; $event_date = $xpath->query('./td[2]', $row)->item(0)->nodeValue ?? 'Не указано'; $event_time = $xpath->query('./td[3]', $row)->item(0)->nodeValue ?? 'Не указано'; $location = $xpath->query('./td[4]', $row)->item(0)->nodeValue ?? 'Не указано'; $event_result = $xpath->query('./td[5]', $row)->item(0)->nodeValue ?? 'Не указано'; $event_basis = $xpath->query('./td[6]', $row)->item(0)->nodeValue ?? 'Не указано'; $note = $xpath->query('./td[7]', $row)->item(0)->nodeValue ?? 'Не указано'; $publication_date = $xpath->query('./td[8]', $row)->item(0)->nodeValue ?? 'Не указано'; // Пропускаем записи, если название события не указано if ($event_name === 'Не указано' || $event_name === 'Наименование события') { log_message("Пропущено событие: название не указано."); continue; // Пропустить итерацию } // Пропускаем записи, если дата имеет неверный формат if ($event_date === '1970-01-01') { log_message("Пропущено событие: неверная дата."); continue; // Пропустить итерацию } // Форматируем дату для базы данных $formatted_date = date('Y-m-d', strtotime($event_date)); $current_datetime = date('Y-m-d H:i:s'); // Форматируем дату публикации $formatted_publication_date = date('Y-m-d', strtotime($publication_date)); log_message("Обрабатываем событие: $event_name, Дата: $formatted_date, Время: $event_time"); // Проверяем, существует ли запись в таблице subject $checkQuery = "SELECT COUNT(*) FROM subject WHERE case_number = ? AND uid = ? AND event_name = ?"; $checkStmt = $pdo->prepare($checkQuery); $checkStmt->execute([$case_number, $uid, $event_name]); $exists = $checkStmt->fetchColumn() > 0; if (!$exists) { // Запись данных в таблицу subject $insertQuery = "INSERT INTO subject (case_number, uid, event_name, event_date, event_time, location, event_result, event_basis, note, publication_date, update_datetime) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; $insertStmt = $pdo->prepare($insertQuery); $insertStmt->execute([$case_number, $uid, $event_name, $formatted_date, $event_time, $location, $event_result, $event_basis, $note, $formatted_publication_date, $current_datetime]); log_message("Данные успешно записаны в таблицу subject для события: $event_name"); echo "

Записано: $event_name, Дата: $formatted_date, Время: $event_time

"; } else { log_message("Дубликат найден для события: $event_name, пропускаем запись."); } } } } ?>