Postman如何从响应的HTML description list中提取指定值
问题原因
你原来的代码$('dt').text()会选中页面内所有<dt>标签,直接调用text()会把所有匹配元素的文本拼接在一起,所以返回了全部dt的内容。
解决方案
因为你的<dd>和<dt>是成对依次相邻排列的,不需要匹配文本内容就可以通过节点关系定位:
方案1:按索引直接取值(适用于键值对顺序固定的场景)
如果你要取第N组的对应值,直接通过dd的索引定位,再取它下一个相邻的dt即可,完全不依赖标签内的文本内容:
const $ = cheerio.load(pm.response.text()) // eq(1)对应第二组键值对(索引从0开始计数,0是第一组Fruit),可根据你需要的组调整索引值 const targetValue = $('dd').eq(1).next('dt').text().trim() console.log('目标值', targetValue)
方案2:先转成键值对象再取用(灵活性更高)
如果后续需要根据键名取值,可以先把所有dl内的键值对批量转成对象存储:
const $ = cheerio.load(pm.response.text()) const dlMap = {} $('dd').each((_, el) => { const key = $(el).text().trim() const value = $(el).next('dt').text().trim() dlMap[key] = value }) // 要取对应值直接从对象拿即可 console.log('Vegetable对应值', dlMap['Vegetable'])
内容的提问来源于stack exchange,提问作者CDS09
相关产品推荐
相关产品推荐

