jljiu commited on
Commit
1dd7887
·
verified ·
1 Parent(s): 98016ce

Update main.js

Browse files
Files changed (1) hide show
  1. main.js +42 -0
main.js CHANGED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const express = require('express');
2
+ const puppeteer = require('puppeteer');
3
+ const app = express();
4
+
5
+ // 定义一个异步函数来处理截图并返回给客户端
6
+ async function takeScreenshotAndReturn(req, res) {
7
+ try {
8
+ // 启动Puppeteer浏览器实例
9
+ const browser = await puppeteer.launch({
10
+ headless: true,
11
+ args: ["--no-sandbox"]
12
+ });
13
+ const page = await browser.newPage();
14
+
15
+ // 从请求参数中获取要截图的网址,默认为百度
16
+ const url = req.query.url || 'https://www.baidu.com';
17
+ await page.goto(url);
18
+
19
+ // 进行截图
20
+ const screenshot = await page.screenshot({ fullPage: true });
21
+
22
+ // 关闭浏览器实例
23
+ await browser.close();
24
+
25
+ // 设置响应头,告诉客户端返回的是图片数据
26
+ res.set('Content-Type', 'image/png');
27
+ // 将截图数据作为响应返回给客户端
28
+ res.send(screenshot);
29
+ } catch (error) {
30
+ console.error('截图操作出现错误:', error);
31
+ res.status(500).send('截图失败:' + error.message);
32
+ }
33
+ }
34
+
35
+ // 定义一个路由,当客户端访问 /screenshot 路径时,调用 takeScreenshotAndReturn 函数
36
+ app.get('/screenshot', takeScreenshotAndReturn);
37
+
38
+ // 启动服务器,监听3000端口
39
+ const port = 3000;
40
+ app.listen(port, () => {
41
+ console.log(`服务器已启动,监听端口 ${port}`);
42
+ });