node.js - 如何从 Puppeteer 获取 REST API JSON 响应?
问题描述
我正在抓取一个网站以获取一些详细信息。我正在向 url 发送一个 POST 请求,并且需要为此获取 JSON 响应数据,因为我需要的数据没有呈现到 HTML 中。
通常我只会使用 axios.post() 或替代方法,但其余 api 会阻止没有会话 ID 的请求,因此我必须使用无头浏览器。
那么,有没有办法拦截 REST APIs JSON 响应,就像您可以在开发人员工具的“网络”选项卡中检查它一样?
解决方案
使用 axios,您有一个中间件管道,您可以使用它来拦截来自服务器的响应。这是在他们的自述文件中标记为“拦截器”的部分
https://github.com/axios/axios#interceptors
// Add a request interceptor
axios.interceptors.request.use(function (config) {
// Do something before request is sent
return config;
}, function (error) {
// Do something with request error
return Promise.reject(error);
});
// Add a response interceptor
axios.interceptors.response.use(function (response) {
// Do something with response data
return response;
}, function (error) {
// Do something with response error
return Promise.reject(error);
});
推荐阅读
- python - 为什么 python pexpect 模块在烧瓶模块中失败?
- postgresql - 有什么方法可以通过获取“来自”并将其与数据库匹配来动态过滤电子邮件?(使用 procmail 或 Virtualmin 或 Webmin)
- java - 如何从 Firebase 获取每个月的所有数据以在 Android 中进行计算
- css - 在网格模板表格单元格中垂直居中图像
- node.js - 聚合 Getstream 通知源
- nativescript - 带有 Nativescript 的滚动视图中的多个全屏
- javascript - jQuery 弹出窗口仅在第二次单击时打开
- reactjs - 拉取新版本的反应应用程序时遇到相同的错误
- json - 使用vba将json提取到excel表
- c++ - C++ 程序的睡眠或时间延迟