没有得到预期的输出 - Cheerio

Not getting expected output - Cheerio

我正在尝试抓取 naukri.com 网站以使用 cheerio 从中获取工作。预期输出是整个页面的文本,而不是我得到以下输出。

<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NX744H"height="0" width="0" style="display:none;visibility:hidden"></iframe>     
<img src="https://www.naukri.com/akam/11/pixel_74f1c4ec?a=dD1hYjJmYTA0N2JkNDM1ODI5NmY0YmZlNzk1ZTMxNGI4YTU1YmEyNWI4JmpzPW9mZg==" style="visibility: hidden; position: absolute; left: -999px; top: -999px;" />

这是代码

'use strict';
const { default: axios } = require('axios');
const cheerio = require('cheerio');

async function jobUrls() {
    try {
        const siteUrl = 'https://www.naukri.com/cse-jobs?k=cse';
        const { data } = await axios({
            method: 'GET',
            url: siteUrl,
        });
        const $ = cheerio.load(data);
        console.log($.text())
    }
    catch (er) {
        console.log(er)
    }
}
jobUrls();

网站 https://www.naukri.com/cse-jobs?k=cse 很可能是 SPA(单页应用程序)。它不能以直接的方式被刮掉。这就是使用浏览器和axios访问网站的区别。

  • (axios) : 请求 HTML --> 得到 HTML 包含脚本的响应 --> 完成
  • (浏览器):请求 HTML --> 获取包含脚本的 HTML 响应 --> 运行 脚本 --> 获取更多数据 --> 渲染 --> 完成.

这是axios的限制,它只做一个HTTP请求。如果您需要抓取整个页面,请考虑在 Node.js 中使用无头浏览器。 Puppeteer 是一个众所周知的包。