我正在使用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 => ... )