我如何使用Cheerio在由UL和类标签包装的li标签中获取数字。
我有以下动态内容的HTML代码段:
<ul class="numbers">
<li class="ball winNum1">21</li>
<li class="ball winNum2">6</li>
<li class="ball winNum3">32</li>
<li class="ball winNum4">14</li>
</ul>
let $ = cheerio.load(body);
let msg = [];
$('li.ball').each( (i, elm)=>{
msg[i] = $(elm).toString().trim();
});
console.log(msg);
我希望打印['21','6','32','14'],而不是这样:
['<li class="ball winNum1"></li>',
'<li class="ball winNum2"></li>',
'<li class="ball winNum3"></li>',
'<li class="ball winNum4"></li>']
li标签中没有数字21、6、32或14。
答案 0 :(得分:0)
经过2天的奋斗,我正在回答自己的问题
仅仅通过使用puppeteer和cheerio来满足动态内容的需求,可能不足以得到我想要的结果。
npm install puppeteer cheerio --save
这是使用puppeteer和cheerio之后的工作代码
puppeteer
.launch()
.then(function(browser) {
return browser.newPage();
})
.then(function(page) {
return page.goto(url).then(function() {
return page.content();
});
})
.then(function(html) {
$('li.ball', html).each(function() {
console.log($(this).text());
});
})
.catch(function(err) {
//handle error
});
我发现“使用Node.js进行Web爬取的终极指南”一文对实现我的结果非常有帮助: https://www.freecodecamp.org/news/the-ultimate-guide-to-web-scraping-with-node-js-daa2027dcd3/