Я хочу построить простого бота с кукловодом. Я использовал страницу. $$ eval, затем я попытался извлечь данные из таблицы (10 страниц) и сопоставил эти данные.
Однако я могу очень хорошо получать данные, с другой стороны, код работает 10 раз на страницу. Я имею в виду, что каждая строка извлекается 10 раз.
Вот мой фрагмент кода:
const tablolariCek = async (url, sayfaSayisi) => {
const browser = await puppeteer.launch({ headless: false });
let page = await browser.newPage();
await page.goto(url);
await page.waitForSelector('#mydata_next');
let okulUni = [];
for (let index = 0; index <= sayfaSayisi; index++) {
let okullar = await page.$$eval(
'#mydata > tbody > [role="row"]',
(uniler) =>
uniler.map((okul) => {
//Here is working 10 times per page.
let uni = {};
uni.okulkodu = okul.querySelector('a').innerText.trim();
const fontVeriler = okul.querySelectorAll('font');
const strongVeriler = okul.querySelectorAll('strong');
for (let index = 0; index < strongVeriler.length; index++) {
if (index == 0) {
uni.uniadi = strongVeriler[index].innerText.trim();
} else if (index == 1) {
uni.bolumadi = strongVeriler[index].innerText.trim();
}
}
for (let index = 0; index < fontVeriler.length; index++) {
if (index == 1) {
uni.bolumadi += ' ' + fontVeriler[index].innerText.trim();
} else if (index == 10) {
uni.siralama2019 = fontVeriler[index].innerText.trim();
} else if (index == 14) {
uni.puan2019 = fontVeriler[index].innerText.trim();
}
}
return uni;
})
);
await page.click('#mydata_next');
okullar.forEach((okul) => {
okulUni.push(okul);
});
}
browser.close();
return okulUni;
};
Вот то, что я пытаюсь получить
<table id="mydata">
<tbody>
<tr role="row" class="odd">//this line
</tbody>
Я могу ' не могу найти решение.
Я нашел решение, изменив эту строку.
const browser = await puppeteer.launch({ headless: false });
const browser = await puppeteer.launch({ headless: false,slowMo: 150 });
Я думаю, что из-за скорости Код не может получить таблицу, которая точно верна. Теперь все отлично работает. Спасибо за ответы.