如何使用Cheerio获取由UL和class标记包装的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。
发布于 2019-06-27 04:54:00
经过两天的努力,我正在回答我自己的问题
看起来对于动态内容,cheerio可能单独是不够的,通过组合使用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进行网络抓取的终极指南”这篇文章对实现我的结果非常有帮助:https://www.freecodecamp.org/news/the-ultimate-guide-to-web-scraping-with-node-js-daa2027dcd3/
https://stackoverflow.com/questions/56746461
复制相似问题