Init
This commit is contained in:
commit
0b88ee364a
92
parce.js
Normal file
92
parce.js
Normal file
@ -0,0 +1,92 @@
|
||||
// Настройки скрипта
|
||||
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();
|
Loading…
Reference in New Issue
Block a user