Hat jemand eine Idee? Ich kriege immer nur 52-112 Zeilen ausgegeben. Lazy Scroll wird nicht korrekt benutzt.
Danke!
Danke!
Code:
async function scrapeAllMembers() {
let scrollContainer = document.querySelector('[role="table"], .list-container-class'); // Versuche, die Mitgliederliste zu finden
let lastHeight = 0;
let scrollAttempts = 0;
const maxScrollAttempts = 100; // Max. Versuche, um sicherzustellen, dass alles geladen ist
console.log("?? Starte Scroll-Vorgang...");
while (scrollAttempts < maxScrollAttempts) {
let currentHeight = scrollContainer ? scrollContainer.scrollHeight : document.body.scrollHeight;
window.scrollTo(0, currentHeight);
await new Promise(resolve => setTimeout(resolve, 2000)); // Wartezeit für das Nachladen
if (currentHeight === lastHeight) {
scrollAttempts++;
} else {
scrollAttempts = 0; // Zurücksetzen, falls sich die Höhe verändert
}
lastHeight = currentHeight;
console.log(`?? Scrolle weiter... (Versuch ${scrollAttempts}/${maxScrollAttempts})`);
if (scrollAttempts >= maxScrollAttempts) {
console.log("? Alle Einträge geladen oder kein weiteres Wachstum festgestellt.");
break;
}
}
console.log("?? Sammle Mitglieder...");
// Mitgliederliste gezielt durchsuchen
let members = [...document.querySelectorAll('[role="row"] *, .member-name-class')]
.map(el => el.innerText.trim())
.filter(text => text.length > 0 && !text.toLowerCase().includes("user")); // "user" entfernen
// Entferne doppelte Einträge
let uniqueMembers = [...new Set(members)];
// Nummerierung hinzufügen
let numberedList = uniqueMembers.map((name, index) => `${index + 1}. ${name}`);
console.log(`? Gesamtanzahl Mitglieder: ${numberedList.length}`);
console.log(numberedList.join("\n"));
return numberedList;
}
// Funktion starten
scrapeAllMembers();