如何用jQuery/Cheerio选择器获取<b>标签文本?链接提取代码出错排查
解答你的两个问题
1. 用jQuery或Cheerio获取<b>标签内的文本
不管是jQuery还是Cheerio,用法其实挺像的,给你分情况说:
jQuery 写法
如果只是拿第一个匹配到的<b>标签文本,一行代码就搞定:
// 获取第一个<b>标签的文本内容 const boldText = $('b').text();
要是想把页面上所有<b>标签的文本都捞出来,存成数组的话,可以这么写:
const allBoldTexts = $('b').map((index, element) => { return $(element).text(); }).get();
这里text()方法会自动去掉HTML标签,只留纯文本;要是你需要连标签里的HTML结构一起拿,换成html()就行。如果要定位特定的<b>标签(比如带class或id的),直接把选择器写精准点,比如$('b.highlight').text()或者$('#main-bold').text()。
Cheerio 写法
Cheerio就是Node端的“jQuery”,API几乎一模一样,举个例子:
const cheerio = require('cheerio'); // 假设这是你加载的HTML内容 const html = '<div><b>第一行粗体</b><p><b>第二行粗体</b></p></div>'; const $ = cheerio.load(html); // 单个<b>标签文本 const singleBold = $('b').text(); // 所有<b>标签文本数组 const allBold = $('b').map((i, el) => $(el).text()).get();
2. 提取链接失败的问题排查
哎,你没把你尝试的代码贴出来呀!没法直接帮你揪出问题。不过我可以给你列几个常见的坑,你先自查看看:
- 选择器写错了:比如链接在
<a>标签的href属性里,但你选了<div>或者其他标签,自然拿不到;或者选择器的class/id拼错了 - 动态内容的问题:如果页面是用JS动态渲染的链接(比如滚动加载、点击加载),Cheerio作为静态HTML解析工具是抓不到的,这时候得用Puppeteer这类能模拟浏览器的工具;要是用jQuery在浏览器里,得确保代码在元素加载完成后执行(比如放在
$(document).ready()里) - 相对路径没处理:提取到的
href是相对路径(比如/page/1),直接用的话会报错,得拼接上网站的域名变成绝对路径 - 没遍历所有元素:比如用
$('a').attr('href')只会返回第一个<a>标签的链接,要拿所有的话得用map方法遍历
要是把你的代码贴出来(记得用反引号包裹,格式清晰点),我就能帮你精准找出问题啦!
内容的提问来源于stack exchange,提问作者Worapol Pragobkit
相关产品推荐
相关产品推荐

