没有得到预期的输出 - 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 是一个众所周知的包。
我正在尝试抓取 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 是一个众所周知的包。