网页抓取时,Nodejs Cheerio 返回 undefined

时间:2021-05-24 09:26:10

标签: javascript node.js cheerio

我试图从名为 NSE 的网站抓取数据,所以首先我尝试在检查元素控制台中执行此操作:

(编辑问题) enter image description here

objs = $('div[class="table-wrap"] > table > tbody > tr > td').slice(0, 8)
objs.map((i,element) => console.log($(element).text()))

我得到输出:

401.20
417.00
- 
411.45
361.10 
441.30 
No Band
-

所以我很高兴,因为我得到了我想要的东西。 但是当我去我的 vscode 并试图为它制作一个脚本时,我猜相同的代码返回了一些随机值。下面是代码:

const cheerio = require("cheerio")
const axios = require("axios")

const url = "https://www.nseindia.com/get-quotes/equity?symbol=SBIN";

async function getDataFromNse() {
    const { data } = await axios.get(url)
    let $ = cheerio.load(data)
    const objectArray = $('div[class="table-wrap"] > table > tbody > tr > td').slice(0, 8)
    objectArray.map((i,element) => console.log($(element).text()))
}

getDataFromNse()

我得到输出:

Indicative Equilibrium Price (In )
-
Indicative Equilibrium Quantity
-
Final Price (In )
                                                                    
-
Final Quantity
-

我不知道检查器中的这些值在哪里。 在控制台中,我得到了正确的数值。 如果有人可以提供帮助,我将不胜感激! 提前致谢。

1 个答案:

答案 0 :(得分:0)

innerText 是一个 DOM 节点属性,所以浏览器有这些而节点没有。

要获取cheerio节点的文本,请使用:

$(element).text()