处理网络抓取项目,我无法以统一的方式获取某些数据。该页面有一个双列表,我只需要抓取第二列的文本来运行编译值。
我正在这样做:
const rq = require('request');
const cheerio = require('cheerio');
rq(url, (err, res, html) => {
let $ = cheerio.load(html);
$('#table-id > tbody > tr > td.data').toArray().map(item => {
console.log(item.text());
});
});
但是我收到.text()
不是函数的错误。
答案 0 :(得分:3)
.text()
是 JQuery 方法,因此要使用它,您需要将项目设为 JQuery 元素
这应该有效:
console.log($(item).text())
答案 1 :(得分:0)
您必须将item
与$()
打包在一起,才能将其转换为cheerio
元素。
$('#table-id > tbody > tr > td.data').toArray().map(item => {
console.log($(item).text());
});
您还可以使用.each并放弃toArray
和map
。并使用$(this)
来引用当前元素。
$('#table-id > tbody > tr > td.data').each(() => {
console.log($(this).text());
});