我正在尝试这个代码来提取一个h4,它是7个父div的孩子。比如父div,祖div。这个h4是声明的。
它不工作,因为没有收到h4。
const puppeteer = require('puppeteer')
async function run() {
const browser = await puppeteer.launch({
headless: false,
ignoreHTTPSErrors: true,
})
var x = 1101;
while (x !== 0) {
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on('request', (req) => {
if (req.resourceType() == 'image' || req.resourceType() == 'font') {
req.abort();
}
else {
req.continue();
}
});
page.setDefaultTimeout(0);
await page.goto(`https://play.projectnebula.com/planet/${x}`);
await page.waitForSelector('h4');
const elements = await page.$$("h4");
let text = await (await elements[elements.length - 2].getProperty("innerText")).jsonValue()
text = text.toLowerCase().trim();
if (text == 'claimed' || text == 'on sale') {
console.log(text, x)
x += 1;
await page.close();
}
else {
console.log(x, text)
x = 0
}
}
}
run();
我试图找到一个无人认领的行星,无人认领和已认领的都在h4。在1或2个网址工作后。代码停止,即使行星被认领,因为claimed的h4没有被提取。在这些页面中有大约13个h4。对于第一个或第二个网址,所有13个被提取,但对于下一个网址,只有11个被fethced
1条答案
按热度按时间sqxo8psd1#
在
await waitforselector()
之后使用await page.waitForNetworkIdle();