如何使用Cheerio/JQuery选择器获取a标签内的文本内容?
问题描述
我尝试提取某网站页面中的链接文本,页面结构如下:
<div id="list"> <div class="class1"> <div class="item-class1"> <a href="http://www.example.com/1">example1</a> </div> </div> <div class="class2"> <div class="item-class2"> <a href="http://www.example.com/2">example2</a> </div> </div> </div>
我用下面的代码提取:
var list = []; $('div[id="list"]').find('a').each(function (index, element) { list.push($(element).attr('href')); });
但输出的是链接地址:
0: "http://www.example.com/1" 1: "http://www.example.com/2"
我期望得到的是链接的文本内容:
0: example1 1: example2
解决方案
你现在用attr('href')获取的是a标签的href属性值(也就是跳转的链接地址),要获取标签包裹的文本内容,只需要把这部分改成$(element).text()就可以了(如果文本里包含HTML格式,也可以用$(element).html(),这里用text()完全满足需求)。
修改后的代码如下:
var list = []; $('div[id="list"]').find('a').each(function (index, element) { list.push($(element).text()); });
运行这段代码后,list数组里就会存储你想要的example1和example2了。
另外,也可以用更简洁的jQuery写法,直接借助map方法实现:
var list = $('div[id="list"] a').map(function() { return $(this).text(); }).get();
这个写法和循环的效果完全一致,只是代码更紧凑。
内容的提问来源于stack exchange,提问作者Worapol Pragobkit
相关产品推荐
相关产品推荐

