JS_Parser_WhatsApp_Group/parce.js
2025-01-26 19:19:54 +00:00

92 lines
4.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Настройки скрипта
const settings = {
scrollContainerSelector: '.x1n2onr6.x1n2onr6.xyw6214.x78zum5.x1r8uery.x1iyjqo2.xdt5ytf.x6ikm8r.x1odjw0f.x1hc1fzr.x1tkvqr7', // Селектор контейнера для прокрутки
participantSelector: '.x10l6tqk.xh8yej3.x1g42fcv', // Селектор элементов участников
nameSelector: '.x1iyjqo2.x6ikm8r.x10wlt62.x1n2onr6.xlyipyv.xuxw1ft.x1rg5ohu._ao3e', // Селектор имени участника
numberSelector: 'span._ajzr span._ao3e', // Селектор номера телефона
statusSelector: '.x13faqbe._ao3e.selectable-text.copyable-text', // Селектор статуса участника
scrollStep: 72, // Высота прокрутки за один шаг (в пикселях)
scrollDelay: 1000, // Задержка между шагами прокрутки (в миллисекундах)
enableLogs: true, // Включить логирование
};
// Функция для прокрутки списка участников
function scrollParticipants() {
const scrollContainer = document.querySelector(settings.scrollContainerSelector); // Контейнер для прокрутки
if (scrollContainer) {
// Симулируем фокус на контейнере
scrollContainer.focus();
// Прокручиваем на высоту одного блока (scrollStep)
scrollContainer.scrollTop += settings.scrollStep;
if (settings.enableLogs) {
console.log(`Прокрутка выполнена: scrollTop = ${scrollContainer.scrollTop}px`);
}
return scrollContainer.scrollTop; // Возвращаем текущее значение scrollTop
} else {
console.error('Контейнер для прокрутки не найден');
return 0;
}
}
// Функция для парсинга данных
function parseParticipants() {
const participants = [];
const participantElements = document.querySelectorAll(settings.participantSelector); // Элементы участников
participantElements.forEach(participant => {
const nameElement = participant.querySelector(settings.nameSelector);
const numberElement = participant.querySelector(settings.numberSelector); // Номер телефона
const statusElement = participant.querySelector(settings.statusSelector);
const name = nameElement ? nameElement.innerText : 'N/A';
const number = numberElement ? numberElement.innerText : 'N/A';
const status = statusElement ? statusElement.innerText : 'N/A';
participants.push({ name, number, status });
});
return participants;
}
// Функция для автоматической прокрутки и сбора данных
function collectData() {
const allParticipants = [];
const scrollContainer = document.querySelector(settings.scrollContainerSelector);
if (!scrollContainer) {
console.error('Контейнер для прокрутки не найден');
return;
}
// Получаем общую высоту контента
const totalHeight = parseInt(scrollContainer.scrollHeight, 10);
if (settings.enableLogs) {
console.log(`Общая высота контента: ${totalHeight}px`);
}
// Функция для выполнения прокрутки и сбора данных
const scrollAndCollect = () => {
const currentScrollTop = scrollParticipants(); // Прокручиваем
const participants = parseParticipants(); // Собираем данные
allParticipants.push(...participants);
// Проверяем, достигли ли мы конца списка
if (currentScrollTop + scrollContainer.clientHeight >= totalHeight) {
if (settings.enableLogs) {
console.log('Достигнут нижний предел. Все данные собраны:');
console.table(allParticipants); // Вывод данных в виде таблицы
}
// Здесь можно сохранить данные, например, отправить на сервер или сохранить в файл
} else {
// Продолжаем прокрутку через указанную задержку
setTimeout(scrollAndCollect, settings.scrollDelay);
}
};
// Запускаем процесс
scrollAndCollect();
}
// Запуск сбора данных
collectData();