悠悠楠杉
Node使用Puppeteer监听并打印网页的接口请求
1. 安装Puppeteer
首先,确保你已经安装了Puppeteer。如果未安装,可以通过npm安装:
bash
npm install puppeteer
2. 编写Puppeteer脚本
我们将编写一个脚本来启动Puppeteer,导航到一个页面,监听网络请求,并从这些请求中提取信息来生成文章。
2.1 创建Puppeteer脚本 (fetchDataAndGenerateArticle.js
)
```javascript
const puppeteer = require('puppeteer');
const fs = require('fs');
const path = require('path');
async function fetchDataAndGenerateArticle(url) {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url, { waitUntil: 'networkidle' }); // 等待页面加载完毕并网络空闲
// 监听并记录所有网络请求的响应
page.on('request', (request) => {
console.log(`${request.method} ${request.url}`);
if (request.response()) {
const responseData = await request.response().text();
console.log(responseData); // 打印响应内容(可选)
}
});
// 关闭浏览器(在生产环境中请谨慎使用)
await browser.close();
}
// 调用函数,指定URL(替换为你想抓取数据的网页)
fetchDataAndGenerateArticle('https://example.com');
```
3. 解析和生成文章内容
generateMarkdownArticle)
javascript
function generateMarkdownArticle(data) {
const title = data.title || 'No Title Provided';
const keywords = data.keywords ? `**Keywords**: ${data.keywords}` : '';
const description = data.description || 'No Description Provided';
const content = data.content || 'No Content Provided'; // 假设内容长度足够1000字左右(实际应用中需适当裁剪或填充)
const mdContent = `# ${title}
${keywords}
${description}
\n\n${content}`; // 使用\n\n来创建新段落
return mdContent;
}
4. 整合并运行脚本
最后,整合上述功能,运行Puppeteer脚本并生成Markdown文件。
```javascript
async function main() {
const url = 'https://example.com'; // 目标URL
const browser = await puppeteer.launch(); // 启动浏览器实例
const page = await browser.newPage(); // 创建新页面实例
await page.goto(url, { waitUntil: 'networkidle' }); // 导航到目标页面并等待加载完成
await page.on('request', (request) => { // 监听网络请求事件并处理数据提取(简化处理)
if (request.url.includes('title')) { // 假设响应包含特定字符串表示标题信息等…实际应用需具体分析URL和响应内容
data = request.response().json(); // 假设返回的是JSON数据,实际中根据响应类型调整处理方式。这里只作为示例。
fs.writeFileSync(path.resolve(__dirname, 'article.md'), generateMarkdownArticle(data)); // 生成并保存Markdown文件。这里使用fs同步方法写入,实际应用中考虑异步方法或错误处理。 } }); await browser.close(); // 关闭浏览器实例 } main().catch(console.error); // 处理异步错误