【发布时间】:2021-05-24 09:26:10
【问题描述】:
我试图从一个名为 NSE 的网站抓取数据,所以首先我尝试在检查元素控制台中进行:
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
-
我不知道这些值在检查器中的位置。 在控制台中我得到了正确的数值。 如果有人可以提供帮助,我将不胜感激! 提前致谢。
【问题讨论】:
-
当使用
Array.map时,元素位于索引之前。你可以试试objectArray.map((element, i) => console.log(element.innerText)) -
@violet 是的,我改变了你的要求,但我仍然收到
undefined:( -
正如我在问题中提到的那样,当我在检查元素控制台上尝试它时,我得到了所需的值,因此这意味着 (i, element) 的位置是正确的......
标签: javascript node.js cheerio