如何用JavaScript结合Axiom.ai提取网页指定类并生成字母组合?
需求说明
我正在用Axiom.ai机器人爬取网页数据,需要用JavaScript提取非数值类数据,具体要求如下:
- 在当前网页中查找包含以下三类CSS类的元素:
color-box weak boldcolor-box neutral boldcolor-box strong bold - 网页中会有3个符合条件的实例,需要给每个实例对应分配字母:
strong → 'S',neutral → 'N',weak → 'W' - 最终返回这三个字母的组合字符串,比如如果实例依次是
color-box strong bold、color-box strong bold、color-box weak bold,则返回'SSW'
参考网页代码
<div _ngcontent-run-c70="" class="analysis-items"> <div _ngcontent-run-c70="" class="term shortTerm"> <div _ngcontent-run-c70=""> <span _ngcontent-run-c70="" class="bold">Short-Term sentiment</span><span _ngcontent-run-c70="">2 weeks to 6 weeks</span></div> <div _ngcontent-run-c70=""> <div _ngcontent-run-c70="" class="color-box muted">weak</div> <div _ngcontent-run-c70="" class="color-box muted">neutral</div> <div _ngcontent-run-c70="" class="color-box strong bold">strong</div> </div> </div> <!----> <div _ngcontent-run-c70="" class="term midTerm"> <div _ngcontent-run-c70=""> <span _ngcontent-run-c70="" class="bold">Mid-Term sentiment</span> <span _ngcontent-run-c70="">6 weeks to 9 months</span> </div> <div _ngcontent-run-c70=""> <div _ngcontent-run-c70="" class="color-box muted">weak</div> <div _ngcontent-run-c70="" class="color-box muted">neutral</div> <div _ngcontent-run-c70="" class="color-box strong bold">strong</div> </div> </div> <!----> <div _ngcontent-run-c70="" class="term longTerm"> <div _ngcontent-run-c70=""> <span _ngcontent-run-c70="" class="bold">Long-Term sentiment</span> <span _ngcontent-run-c70="">9 months to 2 years</span> </div> <div _ngcontent-run-c70=""> <div _ngcontent-run-c70="" class="color-box weak bold">weak</div> <div _ngcontent-run-c70="" class="color-box muted">neutral</div> <div _ngcontent-run-c70="" class="color-box muted">strong</div> </div> </div> <!----> </div>
解决方案
下面是可以直接在Axiom.ai中使用的JavaScript代码:
// 选择所有符合条件的元素:同时包含color-box和bold类,且包含weak/neutral/strong类 const elements = document.querySelectorAll('.color-box.bold.weak, .color-box.bold.neutral, .color-box.bold.strong'); // 定义类与字母的映射关系 const classToLetter = { 'weak': 'W', 'neutral': 'N', 'strong': 'S' }; // 遍历元素生成字母组合 let result = ''; elements.forEach(el => { if (el.classList.contains('weak')) { result += classToLetter.weak; } else if (el.classList.contains('neutral')) { result += classToLetter.neutral; } else if (el.classList.contains('strong')) { result += classToLetter.strong; } }); // 返回最终结果 return result;
代码说明
- 用
querySelectorAll精准筛选目标元素,确保只获取同时包含color-box、bold以及对应情感类的元素 - 通过映射表快速将情感类转换为指定字母
- 遍历元素拼接成最终字符串,返回后Axiom.ai会自动获取该结果
根据你提供的参考网页代码,运行这段代码将返回'SSW',符合预期。
内容的提问来源于stack exchange,提问作者Dolphinideas1
相关产品推荐
相关产品推荐

