最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

waitForSelector 找不到相关部分

网站源码admin30浏览0评论

waitForSelector 找不到相关部分

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());

发布评论

评论列表(0)

  1. 暂无评论