Для моего проекта в колледже я сделал скребок из Википедии, используя nodejs и puppeteer.Это работает для всех, кроме одной ссылки.После удаления почти половины данных таблицы на этой странице (я использую console.log, чтобы увидеть, какие данные были удалены в этот момент), он просто ничего не делает.Это не показывает никакой ошибки.Он не прекращает выполнение, он просто ничего не делает после этого.Браузер кукловода также не закрывается.
В оригинальном редакторе я использовал цикл ссылок для генерации данных.Поскольку это не работало, я сделал отдельный скребок для этой ссылки, но происходит то же самое.Может кто-нибудь мне помочь?
const puppeteer = require('puppeteer');
const fs = require('fs');
(async () => {
try {
const browser = await puppeteer.launch({
headless: false
});
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 800 });
link = "https://en.wikipedia.org/wiki/List_of_terrorist_incidents_in_June_2016";
console.log("==============================");
console.log("Travelling to link:", link);
console.log("==============================");
await page.goto(link, {waitUntil: 'networkidle0'});
let rowArray = await page.$$("table[class='wikitable sortable jquery-tablesorter'] > tbody > tr");
var dataA = [];
for(let row of rowArray){
let date = await row.$eval('td:nth-child(1)', element => element.textContent);
date = date.substring(0, date.length - 1);
let type = await row.$eval('td:nth-child(2)', element => element.textContent);
type = type.substring(0, type.length - 1);
let dead = await row.$eval('td:nth-child(3)', element => element.textContent);
dead = dead.substring(0, dead.length - 1);
let injured = await row.$eval('td:nth-child(4)', element => element.textContent);
injured = injured.substring(0, injured.length - 1);
let location = await row.$eval('td:nth-child(5)', element => element.textContent);
location = location.substring(0, location.length - 1);
let details = await row.$eval('td:nth-child(6)', element => element.textContent);
details = details.substring(0, details.length - 1);
let perpetrator = await row.$eval('td:nth-child(7)', element => element.textContent);
perpetrator = perpetrator.substring(0, perpetrator.length - 1);
let partOf = await row.$eval('td:nth-child(8)', element => element.textContent);
partOf = partOf.substring(0, partOf.length - 1);
console.log("==============================");
console.log({date, type, dead, injured, location, details, perpetrator, partOf});
console.log("==============================");
dataA.push({date, type, dead, injured, location, details, perpetrator, partOf});
}
console.log("==============================");
console.log("Started writing JSON file");
fs.writeFileSync(`./june.json`, JSON.stringify(dataA), 'utf-8');
console.log("Finished writing JSON file");
console.log("==============================");
await browser.close();
} catch (error) {
console.error();
}
})();