Puppeteer 加载数据的时间太长
Puppeteer takes too many seconds to load the data
我有以下内容:
const puppeteer = require('puppeteer');
var express = require('express');
var app = express();
var port = process.env.PORT || 3001;
app.listen(port);
app.get('/', (req, res) => {
res.setHeader('Access-Control-Allow-Origin', '*');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(`url`);
const data = await page.evaluate(() => {
const imgs = Array.from(document.querySelectorAll('.dp-gallery__list-item img'));
return imgs.map(td => {
var txt = td.src;
return txt;
});
});
res.send({ data });
await browser.close();
})();
});
我需要的内容 .dp-gallery__list-item img 由 js 动态加载(我已经通过禁用 js 对其进行了测试)因此使用了 puppeteer.
我面临的问题是,每次我点击“/”时,都需要 3/4 秒才能收到 ui:
中的响应
const About = ({data}) => (
<div>
<Header />
{data &&
data.map(((img, i) => <img key={`${i} '-' ${img}`} src={img} />))
}
<p>Hello Next.js</p>
</div>
);
About.getInitialProps = async ({query: {id}}) => {
const res = await fetch('http://localhost:3001/');
const data = await res.json();
console.log('id: ', id);
return data;
}
export default About;
是因为我要查找的内容是动态加载的,还是我缺少 Puppeteer 配置的某些内容?
当您点击“/”时,它会执行很多操作,包括以下内容:
- 它打开创建一个新的临时 chrome 配置文件。
- 启动带有特定标志和选项的 chrome。
- 创建一个新标签。
- 加载目标 url。
- 等待一些事件触发。
- 评估您的代码。
- 关闭浏览器。
- 发送您的数据。
基本上是按照指示去做的。创建新 chrome 选项卡的速度取决于您的计算机资源,导航到该网站取决于您的计算机和目标网站。如果它是动态网站,那么各种页面加载事件会增加成本。还有 UI 的开销。
因此完成所有这些步骤需要 3-4 秒。
我有以下内容:
const puppeteer = require('puppeteer');
var express = require('express');
var app = express();
var port = process.env.PORT || 3001;
app.listen(port);
app.get('/', (req, res) => {
res.setHeader('Access-Control-Allow-Origin', '*');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(`url`);
const data = await page.evaluate(() => {
const imgs = Array.from(document.querySelectorAll('.dp-gallery__list-item img'));
return imgs.map(td => {
var txt = td.src;
return txt;
});
});
res.send({ data });
await browser.close();
})();
});
我需要的内容 .dp-gallery__list-item img 由 js 动态加载(我已经通过禁用 js 对其进行了测试)因此使用了 puppeteer.
我面临的问题是,每次我点击“/”时,都需要 3/4 秒才能收到 ui:
中的响应const About = ({data}) => (
<div>
<Header />
{data &&
data.map(((img, i) => <img key={`${i} '-' ${img}`} src={img} />))
}
<p>Hello Next.js</p>
</div>
);
About.getInitialProps = async ({query: {id}}) => {
const res = await fetch('http://localhost:3001/');
const data = await res.json();
console.log('id: ', id);
return data;
}
export default About;
是因为我要查找的内容是动态加载的,还是我缺少 Puppeteer 配置的某些内容?
当您点击“/”时,它会执行很多操作,包括以下内容:
- 它打开创建一个新的临时 chrome 配置文件。
- 启动带有特定标志和选项的 chrome。
- 创建一个新标签。
- 加载目标 url。
- 等待一些事件触发。
- 评估您的代码。
- 关闭浏览器。
- 发送您的数据。
基本上是按照指示去做的。创建新 chrome 选项卡的速度取决于您的计算机资源,导航到该网站取决于您的计算机和目标网站。如果它是动态网站,那么各种页面加载事件会增加成本。还有 UI 的开销。
因此完成所有这些步骤需要 3-4 秒。