找不到相关部分"/>
waitForSelector 找不到相关部分
我在 Puppeteer 中使用以下代码来检查相关部分是否已加载,但它总是返回加载错误。这可能是什么原因?
少了哪一部分我不明白
我正在使用以下代码:
async function getResults(lnk) {
const results = [];
const timeFrames = [1, 5, 15];
const browser = await puppeteer.launch({
headless: true,
args: [
"--no-sandbox",
"--disable-setuid-sandbox",
"--disable-dev-shm-usage",
"--single-process",
"--no-zygote",
// "--remote-debugging-port"
],
timeout: 0,
executablePath:
process.env.NODE_ENV === "production"
? process.env.PUPPETEER_EXECUTABLE_PATH
: puppeteer.executablePath(),
});
const page = await browser.newPage();
for (const i of timeFrames) {
const url = `${lnk}?timeFrame=${i * 60}`;
console.log(`Getting: ${url}`);
await page.goto(url, {waitUntil: "networkidle0"});
console.log("Process 1");
// await page.waitForTimeout(10000); // wait for 10 seconds
// await page.waitForNavigation({waitUntil: "domcontentloaded"});
// await page.waitForTimeout(1000)
await page
.waitForSelector("section.forecast-box-graph")
.then(async () => {
// await page.waitForSelector('h1.main-title.js-main-title');
console.log("Getting");
const status = await page.$eval(
"section.forecast-box-graph .title",
el => el.textContent
);
const Bank_Name = await page.$eval(
"h1.main-title.js-main-title",
el => el.textContent.trim()
);
results.push(status);
await page.close();
})
.catch(() => console.log("Loading error"));
}
await browser.close();
results.push(lnk.split("/").pop().split("-").join(" "));
return results;
}
这是相关的部分。并在此处链接
回答如下:你在错误的地方关闭页面,像下面这样将所有内容放入 for 循环并增加视口大小将解决你的问题。
const puppeteer = require("puppeteer");
let browser;
(async () => {
async function getResults(lnk) {
let results = [];
const timeFrames = [1, 5, 15];
for (const i of timeFrames) {
const browser = await puppeteer.launch({headless: true});
const page = await browser.newPage();
await page.setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36");
await page.setViewport({width: 1920, height: 1080});
const url = `${lnk}?timeFrame=${i * 60}`;
console.log(url);
await page.goto(url, {waitUntil: "networkidle2", timeout: 70000});
await page.waitForSelector('section.forecast-box-graph');
const status = await page.$eval("section.forecast-box-graph .title", el => el.textContent);
const bank_name = await page.$eval("h1.main-title.js-main-title", (el) => el.textContent.trim());
results.push({
bankName: bank_name,
status: status,
lnk: lnk.replace(/-/g, ' ').split('/').pop(),
url: url
});
await browser.close();
}
return results;
}
console.log( await getResults('https://in.investing/equities/axis-bank-technical'));
})().catch(err => console.error(err)). finally(() => browser?. close());
更多推荐
waitForSelector 找不到相关部分
发布评论