在 puppeteer 站点内获取数据

Fetching data inside puppeteer site

我在从外部服务获取数据时遇到奇怪的问题。我有简单的脚本来打印来自 API:

的一些数据
fetch("http://sip.ztm.kielce.pl/Home/CNR_GetVehicles?r=0W&d=&nb=", {"credentials":"include","headers":{"accept":"application/xml, text/xml, */*; q=0.01","accept-language":"pl;q=1.3592","x-requested-with":"XMLHttpRequest"},"referrer":"http://sip.ztm.kielce.pl/","referrerPolicy":"no-referrer-when-downgrade","body":null,"method":"GET","mode":"cors"})
.then(response => {
        return response.text();
    }).then(function(data) {
    console.log(data); // this will be a string
});

此脚本有效,但仅当我处于 http://sip.ztm.kielce.pl 时有效。所以我计划使用 puppeteer 从这个网站上下文评估这个脚本。

所以我写了Node.JS代码:

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    page.on('console', (log) => console[log._type](log._text));

    await page.goto('http://sip.ztm.kielce.pl');
    await page.waitFor(5000);

    await page.evaluate(() => {
        console.log('test');
        fetch("http://sip.ztm.kielce.pl/Home/CNR_GetVehicles?r=0W&d=&nb=", {"credentials":"include","headers":{"accept":"application/xml, text/xml, */*; q=0.01","accept-language":"pl;q=1.3592","x-requested-with":"XMLHttpRequest"},"referrer":"http://sip.ztm.kielce.pl/","referrerPolicy":"no-referrer-when-downgrade","body":null,"method":"GET","mode":"cors"})
        .then(response => {
                return response.text();
            }).then(function(data) {
            console.log(data); // this will be a string
        });
    });
    await browser.close();
})();

但我得到的回应不同于 "normal" 方式。 你知道它有什么问题吗?

像这样使用相对 url:

/Home/CNR_GetVehicles?r=0W&d=&nb= 

而不是完整路径

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    page.on('console', (log) => console[log._type](log._text));

    await page.goto('http://sip.ztm.kielce.pl', {
        waitUntil: "networkidle2",
    })

    await page.evaluate(() => {
        console.log('test');
        fetch("/Home/CNR_GetVehicles?r=0W&d=&nb=", {"credentials":"include","headers":{"accept":"application/xml, text/xml, */*; q=0.01","accept-language":"pl;q=1.3592","x-requested-with":"XMLHttpRequest"},"referrer":"http://sip.ztm.kielce.pl/","referrerPolicy":"no-referrer-when-downgrade","body":null,"method":"GET","mode":"cors"})
        .then(response => {
                return response.text();
            }).then(function(data) {
            console.log(data); // this will be a string
        });
    });
    await browser.close();
})();

或者您可以直接转到那个 url

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    page.on('console', (log) => console[log._type](log._text));

    await page.goto('http://sip.ztm.kielce.pl/Home/CNR_GetVehicles?r=0W&d=&nb=', {
        waitUntil: "networkidle2",
    });

    await page.evaluate(() => {
        const data = document.body.innerText
        console.log(data) // it will be string

    });
    await browser.close();
})();