Cheerio.js .each() 函数在与 .find('a').text() 一起使用时返回一个大字符串
Cheerio.js .each() function is returning one large string when used with .find('a').text()
我正在使用 CheerioJS 从站点抓取文本列表。我正确地找到了文本,但是在 table 行的数组上使用 .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 中的字符串数组,而是一个包含所有文本的大字符串,如下所示:
One big String
我猜这与 CheerioJS returns 如何从 .each() 获取数据有关?我尝试将每个 .find().text() 的结果保存到它自己的变量中,然后插入它,但这并没有解决它。
正如我在评论中所说,Cheerio 是 jQuery 的一个奇怪的克隆,并且与它的行为并不完全相同。 $(element).find('a')
找到所有 <a>
但 returns 一个 Cheerio 对象。您可以使用
迭代链接
$(element).find('a').each( ..... push etc )
或
$(element).find('a').toArray().forEach( element => ... )
我正在使用 CheerioJS 从站点抓取文本列表。我正确地找到了文本,但是在 table 行的数组上使用 .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 中的字符串数组,而是一个包含所有文本的大字符串,如下所示:
One big String
我猜这与 CheerioJS returns 如何从 .each() 获取数据有关?我尝试将每个 .find().text() 的结果保存到它自己的变量中,然后插入它,但这并没有解决它。
正如我在评论中所说,Cheerio 是 jQuery 的一个奇怪的克隆,并且与它的行为并不完全相同。 $(element).find('a')
找到所有 <a>
但 returns 一个 Cheerio 对象。您可以使用
$(element).find('a').each( ..... push etc )
或
$(element).find('a').toArray().forEach( element => ... )