Я использую Puppeteer для очистки веб-страницы методом async / await.
Чтобы очистить данные, мне нужно сначала найти более 600 значений с помощью браузера веб-страницы, поэтому я создал CSV-файл, содержащий значения.
Я импортирую csv-parser, чтобы прочитать файл, а затем объявляю строку из каждой строки в csv, чтобы потом можно было искать содержимое каждой строки в браузере.
Вот код, который мне удалось собрать:
const csv = require('csv-parser');
(async function main (){
try{
fs.createReadStream('values.csv')
.pipe(csv())
.on('data', async function (data) {
const str = String(data.Row1)
// … Here’s the code to open headless Chrome and open the webpage (working fine)
// Code to type in the string into the search bar and click the search button:
await page.type('#SearchBar', str);
await page.click('#SearchButton');
// … Here’s the code to scrape the data displayed after each search (working fine)
});
})();
Когда я запустил код, он попытался открыть более 600 безголовых браузеров, и появилось следующее сообщение:
(узел: 9568) MaxListenersExceededWarning: Обнаружена возможная утечка памяти в EventEmitter. Добавлено 11 SIGHUP слушателей. Используйте emitter.setMaxListeners () для увеличения лимита
Затем я попытался прочитать CSV-файл только с 10 строками, и он работал нормально. Но мне нужно включить все 600 значений в файл, поэтому я попытался ограничить число поисков до 10, заставив функцию принимать обратный вызов в качестве второго параметра с помощью модуля async, но это не сработало.
¿Как я могу асинхронно искать 10 значений за раз, то есть ограничивать чтение до 10 строк за итерацию?
Я прошу прощения, если я недостаточно четко сформулировал свой вопрос или если есть более простой способ достичь той же цели, но у меня нулевой опыт кодирования, и я просто пытаюсь разработать инструмент для офиса моих родителей до Я уезжаю в следующем году.