puppeteer监听response并封装为express服务调用

这篇具有很好参考价值的文章主要介绍了puppeteer监听response并封装为express服务调用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

puppeteer监听response并封装为express服务调用,爬虫,爬虫文章来源地址https://www.toymoban.com/news/detail-624235.html

到了这里,关于puppeteer监听response并封装为express服务调用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 如何在Puppeteer中设置User-Agent来绕过京东的反爬虫机制?

    京东作为中国最大的电商平台,为了保护其网站数据的安全性,采取了一系列的反爬虫机制。然而,作为开发者,我们可能需要使用爬虫工具来获取京东的数据。 正文 Puppeteer 是一个由 Google 开发的 Node.js 库,它提供了高级的 API,用于控制无头浏览器(Headless Browser),如 C

    2024年02月08日
    浏览(12)
  • 互联网大厂技术-HTTP请求-Springboot整合Feign更优雅地实现Http服务调用
no suitable HttpMessageConverter found for response type

    互联网大厂技术-HTTP请求-Springboot整合Feign更优雅地实现Http服务调用 no suitable HttpMessageConverter found for response type

    目录 一、SpringBoot快速整合Feign 1.添加Pom依赖 2.启动类添加注解 3.引用Feign服务 二、为请求添加Header的3种方式 1.添加固定header 2.通过接口签名添加header 3.动态添加header 三、为请求添加超时配置 1.默认超时时间 3.超时异常 4.全局超时配置 5.为单个服务设置超时配置 四、为请求配

    2024年02月11日
    浏览(8)
  • Node后端框架Express与Koa接口统一响应封装

    Node后端框架Express与Koa接口统一响应封装

    以前在写 SpringBoot 全栈开发的系列文章中全栈开发之后端脚手架:SpringBoot集成MybatisPlus代码生成,分页,雪花算法,统一响应,异常拦截,Swagger3接口文档,有提到对后端接口的响应数据进行统一的封装,方便前端或者第三方进行数据获取与对接工作;统一响应一般包含状态

    2024年02月05日
    浏览(15)
  • 爬虫入门学习(二)——response对象

    爬虫入门学习(二)——response对象

    大家好!我是 码银 ,代码的 码 ,银子的 银 🥰 欢迎关注🥰: CSDN:码银 公众号:码银学编程 在本篇文章,我们继续讨论request模块。从上一节(爬虫学习(1)--requests模块的使用-CSDN博客)中我们可以知道 requests.get()  是 Python 的  requests  库中的一个方法,用于发送 HTTP GET

    2024年01月17日
    浏览(5)
  • nodejs + express 调用本地 python程序

    假设已经安装好 nodejs ; cd /js/node_js ; 安装在当前目录的 node_modules/ npm install express --save  或者 cnpm install express --save web 服务器程序 server.js index.html  用 jQuery.ajax 读取文本文件 jquery.min.js , python 程序要放在 public/ 运行 node server.js 浏览器访问 http://127.0.0.1:8000/ 参考旧版本:pyt

    2024年02月15日
    浏览(10)
  • Puppeteer+RabbitMQ:Node.js 批量加工pdf服务架构设计与落地

    Puppeteer+RabbitMQ:Node.js 批量加工pdf服务架构设计与落地

    智慧作业最近上线「 个性化手册 」(简称个册)功能,一份完整的个性化手册分为 三部分 : 学情分析 :根据学生阶段性的学习和考试情况进行学情分析、归纳、总结,汇总学情数据; 精准推荐 :推荐算法基于学情数据结合知识图谱进行精准练习题推荐; 错题回顾 :错题

    2023年04月19日
    浏览(9)
  • uni-app 封装 websocket 并且监听心跳机制

    新建 socket.js , 将以下代码复制进去 ,向外暴露。 在入口文件中 将 socketIO 挂载在 Vue 原型上 , 也可以按需引入置顶页面 。 在需要用到webSocket的页面中使用如下方法(可根据自身业务需求进行整改) 离开页面,记得断开连接。

    2024年02月11日
    浏览(11)
  • 基于express调用chatgpt文字流输出和有道智云语音合成

    express是基于node.js的一个web框架,可以更加简洁的去创建一个后台服务,由于项目的需要,引入和typescript,经过几天的努力实现了chatgpt文字流输出+有道智云语音合成的结合(略有遗憾),下面我记载以下,以供参考     要出现chatgpt原生接口的流式效果(也就是一个字一个字

    2024年02月15日
    浏览(8)
  • vue3 封装自定义指令,监听元素宽高的变化

    vue3 封装自定义指令,监听元素宽高的变化

    最近做一个项目,涉及到echart图,要去根据父元素去自适应宽高,所以需要监听到元素的宽高变化、 因为是 监听某一元素的宽高变化 ,所以这里用的是 ResizeObserver. ResizeObserver 是可以监听到DOM元素,宽高的变化,需要注意的一点就是监听出变化结果是contentBox的宽度和高度。

    2024年02月07日
    浏览(11)
  • Vue3封装全局WebSocket;全局可监听、可发送、心跳处理等;

    操作如下 可以在多个页面多个组件中进行监听/发送 代码简介 方便; 首先安装 tools-javascript 以及 tools-vue3 根据你的业务需求初始化 ws 在你的任何文件中直接调用即可 附加篇(也可不读 直接看文档 )

    2024年02月11日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包