Mar*_*coS 12 javascript jquery-selectors cheerio
我有一些像这样的HTML:
<span id="cod">Code:</span> <span>12345</span>
<span>Category:</span> <span>faucets</span>
Run Code Online (Sandbox Code Playgroud)
我想获取类别名称("水龙头").这是我的试用版:
var $ = cheerio.load(html.contents);
var category = $('span[innerHTML="Category:"]').next().text();
Run Code Online (Sandbox Code Playgroud)
但这不起作用(innerHTML修饰符不选择任何东西).
任何线索?
Jos*_*ier 25
您的代码不起作用的原因是因为它[innerHTML]是一个属性选择器,并且innerHTML不是该元素的属性(这意味着没有选择任何内容).
您可以span根据文本过滤元素.在下面的示例中,.trim()用于修剪任何空格.如果文本等于'Category:',则该元素将包含在已过滤的返回元素集中.
var category = $('span').filter(function() {
  return $(this).text().trim() === 'Category:';
}).next().text();
Run Code Online (Sandbox Code Playgroud)
如果文本正好是"类别:",则上面的代码段将过滤元素.如果要在文本包含该字符串时选择元素,可以使用:contains选择器(如注释中所指出的):
var category = $('span:contains("Category:")').next().text();
Run Code Online (Sandbox Code Playgroud)
或者,使用该.indexOf()方法也可以:
var category = $('span').filter(function() {
  return $(this).text().indexOf('Category:') > -1;
}).next().text();
Run Code Online (Sandbox Code Playgroud)
        pgu*_*rio 12
一个更简单的解决方案是:
var category = $('span:contains("Category:") + span').text()
Run Code Online (Sandbox Code Playgroud)
这是 css 加上:contains伪代码,它是 jQuery 的一部分,并受 Cheerio 支持。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           16043 次  |  
        
|   最近记录:  |