【发布时间】:2021-10-09 01:49:42
【问题描述】:
我正在尝试用 node js 和cheerio 抓取这个 html 以从 span 标签中获取 72。但是,当我放置选择器时,它什么也不返回(空字符串)。
在这种情况下,我想要 span 标签中的 72,我会将部分代码和选择器放在下面:
首先,网站html:
<li id="TonerSupplies" data-node="TonerSupplies" class="child-row">
<div class="supplyStatusContainer" data-init="initSupplyStatusContainer(this)">
<div class="contentRow" role="gridcell">
<div class="contentHeader" role="heading">
<span class="translated" data-textid="67527" tabindex="-1">
Black Cartridge
</span>
<br>
</div>
<div class="contentBody" role="presentation">
<div class="progress" role="presentation" tabindex="" data-deviceid="8-1">
<div class="progress-inner BlackGauge" role="img" title="72%" aria-labelledby="72%">
<div class="progress-slider" style="width: 166px; overflow: hidden;">
<span class="dataText">72</span>
</div>
</div> </div>
</div>
</div>
</div>
</li>
在我发布这个问题之前,我真的尝试查找 Cheerio 和 jQuery 选择器,但我找不到任何可以帮助我的东西。
这是我的代码:
const cheerio = require('cheerio');
const request = require('request');
request({
method: 'GET',
url: `http://exmaple.com/`
}, (err, res, body) => {
if (err) return console.error(err);
let $ = cheerio.load(body);
let TonerLevel = 'empty';
TonerLevel = $('#TonerSupplies > div > div > div.contentBody > div > div > div > span');
console.log(TonerLevel.text());
});
感谢您对如何获得“72”的帮助和建议
如果我也可以获取属性“标题”,我将获取墨粉级别,但是当我使用选择器然后TonerLevel.attr('title') 时返回未定义@
它适用于其他一些元素。
【问题讨论】:
-
看起来像
$('.dataText').text()
标签: jquery node.js web-scraping cheerio htmlelements