简体   繁体   English

缓慢的 Puppeteer 性能问题

[英]Slow Puppeteer Performance issues

So I have got my weather scraper working, however the performance is very slow.所以我已经让我的天气刮板工作了,但是性能很慢。 I assume its how I am destructuring the data, But I am really not sure.我假设它是如何破坏数据的,但我真的不确定。 Would love any advice!!希望有任何建议!

const puppeteer = require("puppeteer");
const express = require("express");
const app = express();


app.get("/weather", async (req, res) => {
  const browser = await puppeteer.launch({ headless: false });
  const page = await browser.newPage();
  await page.goto("https://mars.nasa.gov/msl/weather/");

  const nasaWeatherDataScrape = await page.evaluate(() => {
    let items = [...document.querySelectorAll(".item")];
    return items.map((item) => {
      const newMap = new Map();
      newMap["Sol"] = item.childNodes[0].innerText.split(" ").pop();
      newMap["Date"] = item.childNodes[1].innerText;
      newMap["High"] = item.childNodes[4].innerText
        .split("C")[0]
        .split(" ")
        .pop();
      newMap["Low"] = item.childNodes[4].innerText
        .split("C")[1]
        .split(" ")
        .pop();
      return newMap;
    });
  });

  console.log(nasaWeatherDataScrape, "in");
  res.send(nasaWeatherDataScrape);
  await browser.close();
});

app.listen(5000);

Did you tried get out of the route:您是否尝试过离开路线:

  const browser = await puppeteer.launch({ headless: false });

And not close the browser in it?而不是关闭浏览器呢?

await browser.close();

Something like this:像这样的东西:

const puppeteer = require("puppeteer");
const express = require("express");
const app = express();

const browser = await puppeteer.launch({ headless: false });


app.get("/weather", async (req, res) => {

  const aboutBlankPage = (await browser.pages())[0] 
  if(aboutBlankPage){
      await aboutBlankPage.close();
  }
  

  const page = await browser.newPage();
  await page.goto("https://mars.nasa.gov/msl/weather/");

  const nasaWeatherDataScrape = await page.evaluate(() => {
    let items = [...document.querySelectorAll(".item")];
    return items.map((item) => {
      const newMap = new Map();
      newMap["Sol"] = item.childNodes[0].innerText.split(" ").pop();
      newMap["Date"] = item.childNodes[1].innerText;
      newMap["High"] = item.childNodes[4].innerText
        .split("C")[0]
        .split(" ")
        .pop();
      newMap["Low"] = item.childNodes[4].innerText
        .split("C")[1]
        .split(" ")
        .pop();
      return newMap;
    });
  });

  console.log(nasaWeatherDataScrape, "in");
  res.send(nasaWeatherDataScrape);


  const newPage = (await browser.pages())[0] 
  await newPage.close();

  // await browser.close();

});

app.listen(5000);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM