因此,我尝试使用Puppeteer抓取网站。我要获取的所有数据都在多个表中。具体来说,我正在尝试从单个表中获取数据。我能够使用非常冗长的.querySelector(table.myclass ~ table.myclass)
来获取特定的表,所以现在我的问题是,我的代码正在获取每个表的第一项(从正确的表开始,即第二个表),但是我无法找到一种方法来仅获取第二张表中的所有数据。
const puppeteer = require('puppeteer');
const myUrl = "https://coolurl.com";
(async () => {
const browser = await puppeteer.launch({
headless: true
});
const page = (await browser.pages())[0];
await page.setViewport({
width: 1920,
height: 926
});
await page.goto(myUrl);
let gameData = await page.evaluate(() => {
let games = [];
let gamesElms = document.querySelectorAll('table.myclass ~ table.myclass');
gamesElms.forEach((gameelement) => {
let gameJson = {};
try {
gameJson.name = gameelement.querySelector('.myclass2').textContent;
} catch (exception) {
console.warn(exception);
}
games.push(gameJson);
});
return games;
})
console.log(gameData);
browser.close();
})();
答案 0 :(得分:2)
您可以使用以下两种方法之一来选择第二张表:
let gamesElms = document.querySelectorAll('table.myclass')[1];
let gamesElms = document.querySelector('table.myclass:nth-child(2)');
此外,您可以使用下面的示例将表中的所有数据推送到数组:
let games = Array.from(document.querySelectorAll('table.myclass:nth-child(2) tr'), e => {
return Array.from(e.querySelectorAll('th, td'), e => e.textContent);
});
// console.log(games[rowNum][cellNum]); <-- textContent