Cheerio.js .each() 函数在与 .find('a').text() 一起使用时返回一个大字符串



我正在使用CheerioJS从网站上抓取文本列表。我正确地找到了文本,但是在表行数组中使用.each时发生了一些奇怪的事情。

这是我的代码

const getTopCollections = async () => {
const response = await axios.get('https://www.nft-stats.com/top-collections/7d')
const $ = cheerio.load(response.data)
const return_data = []
const table = $('table').children('tbody')
table.each((i, element) => {
let col_name = $(element).find('a').text()
return_data.push(col_name)
})
console.log(return_data);
return return_data

我得到的不是return_data中的字符串数组,而是一个大字符串,所有文本都在一个字符串中,如下所示:

一个大字符串

我猜这与CheerioJS如何从.ech((返回数据有关?我试着将每个.find((.text((的结果保存到它自己的变量中,然后插入,但这并没有解决问题

正如我在评论中所说,Cheerio是jQuery的一个奇怪的克隆,它的行为与jQuery不同。$(element).find('a')查找所有<a>,但返回一个Cheerio对象。您可以使用迭代链接

$(element).find('a').each( ..... push etc )

$(element).find('a').toArray().forEach( element => ... )

最新更新