我有一个数组,一个会在网站上返回一个无效的搜索结果,另一个会返回一个有效的搜索。
["sakdjlkasjda", "Assassin's Creed Origins"]
然后我映射数组并将值传递给异步函数
const cex = games.map((game) => cexSearch(game));
return Promise.all(cex)
.then(function(g) {
console.log(g);
res.send(g);
});
在异步函数中,我创建了一个 Puppeteer 实例,导航到 URL。该网站有一个元素(没有类或 id),仅在没有结果的地方显示。对于有效结果noRecordsDisplay应该相等none,没有有效结果的地方noRecordsDisplay应该相等""。但是,有几次我注意到对于应该无效的搜索,noRecordsDisplayequals none,所以不确定我在哪里出错,它在大多数情况下都有效,但不是一直有效?任何帮助将不胜感激。
async function cexSearch(game) {
const url = 'https://uk.webuy.com/search?stext=' + game;
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36');
await page.goto(url, {
timeout: 3000000
});
const content = '.content-area';
await page.waitForSelector(content);
await page.waitForSelector('.content-area > div:not(.searchRcrd)');
const noRecordsDisplay = await page.evaluate(() => document.querySelector('.content-area > div:not(.searchRcrd)').style.display);
console.log("display = " + noRecordsDisplay);
if (noRecordsDisplay === "") {
return "No Search Results";
} else {
//When there is an invalid search it sometimes reaches here and .searchRcrd does not exist so it timesout
const selector = '.searchRcrd';
await page.waitForSelector(selector);
// DO logic
await browser.close();
return records;
}
}