微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

网页抓取时,Nodejs Cheerio 返回 undefined

如何解决网页抓取时,Nodejs Cheerio 返回 undefined

我试图从名为 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
-

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

解决方法

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

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

$(element).text()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。