const express = require('express');
const puppeteer = require('puppeteer');
const app = express();
let browser; // 声明一个全局变量来存储浏览器实例
app.get('/getInfo', async (req, res) => {
try {
const page_param = req.query.page; // 获取名为"page"的查询参数值
const page = await browser.newPage(); // 在每次请求中重复使用现有的浏览器实例
const responsePromise = new Promise((resolve) => {
//监听所有请求的响应
page.on('response', async (response) => {
const url = response.url();
//某个接口url包含/api/movie/
if (url.includes('/api/movie/')) {
const data = await response.text();
// console.log("data",data)
resolve(data)
}
});
});
if (!page_param) {
await page.goto('https://spa2.scrape.center');
} else {
await page.goto('https://spa2.scrape.center/page/' + page_param);
}
let content = await responsePromise; // 等待所有请求完成
res.send(content);
await page.close(); // 请求完成后关闭页面,而不是关闭整个浏览器实例
} catch (error) {
console.error(error);
res.status(500).send('Internal Server Error');
}
});
app.listen(3000, async () => {
console.log('Server is running on port 3000');
console.log('请访问:', 'http://localhost:3000/getInfo');
// 在服务器启动时创建浏览器实例
try {
browser = await puppeteer.launch({
headless: true,
});
} catch (error) {
console.error('Failed to launch browser:', error);
}
});
// 在应用程序关闭时关闭浏览器实例
process.on('exit', async () => {
if (browser) {
await browser.close();
}
});
//访问:http://localhost:3000/getInfo?page=1
文章来源地址https://www.toymoban.com/news/detail-624235.html
文章来源:https://www.toymoban.com/news/detail-624235.html
到了这里,关于puppeteer监听response并封装为express服务调用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!