javascript - 如何使用 Puppeteer 从 XHR 请求中获取 body/json 响应

标签 javascript node.js puppeteer webautomation

<分区>

我想从我正在使用 Puppeteer 抓取的网站获取 JSON 数据,但我不知道如何取回请求的正文。这是我尝试过的:

const puppeteer = require('puppeteer')
const results = [];
(async () => {
    const browser = await puppeteer.launch({
        headless: false
    })
    const page = await browser.newPage()
    await page.goto("https://capuk.org/i-want-help/courses/cap-money-course/introduction", {
        waitUntil: 'networkidle2'
    });

    await page.type('#search-form > input[type="text"]', 'bd14ew')  
    await page.click('#search-form > input[type="submit"]')

    await page.on('response', response => {    
        if (response.url() == "https://capuk.org/ajax_search/capmoneycourses"){
            console.log('XHR response received'); 
            console.log(response.json()); 
        } 
    }); 
})()

这只是返回一个 promise pending 函数。任何帮助都会很棒。

最佳答案

由于 response.json 返回一个 promise,我们需要等待它。

page.on('response', async (response) => {    
    if (response.url() == "https://capuk.org/ajax_search/capmoneycourses"){
        console.log('XHR response received'); 
        console.log(await response.json()); 
    } 
}); 

关于javascript - 如何使用 Puppeteer 从 XHR 请求中获取 body/json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56689420/

相关文章:

javascript - Puppeteer:一个浏览器实例中的多个屏幕截图

javascript - Puppeteer 如何在失败时延迟重试 url 获取

node.js - 使用 puppeteer 单击不同链接时遇到问题

javascript - 在父状态更改后 react 子组件不重新渲染

javascript - 我的 index.js 中没有任何 React 渲染

javascript - 如何有效地从字节中读取位?

node.js - Nodejs 上的 ldap auth - 不断收到 32 No Such Object

javascript - 在客户端找不到 socket.io.js

javascript - 对因子捆绑的部分捆绑进行一些操作

javascript - 如何在reactJs中显示实时摄像头信息