在Node-RED中通过编程方式解析HTML提取<a>标签值的方法问询
解决方案:在Function节点中实现HTML快速解析
你需要的类HTML.parse的能力可以通过轻量HTML解析库cheerio实现,语法和jQuery完全一致,你可以直接在单个Function节点中完成解析、提取a标签、组装下一轮请求参数的全流程,无需串联多个专用解析节点。
前置配置
- 首先在Node-RED工作目录下安装cheerio依赖:
npm install cheerio - 打开Node-RED的配置文件
settings.js,找到functionGlobalContext配置项,添加cheerio的全局引用:functionGlobalContext: { // 原有配置保留即可 cheerio: require('cheerio') } - 重启Node-RED使配置生效
如果你不想修改全局配置,也可以直接安装第三方节点
node-red-contrib-cheerio-function,该节点内置cheerio运行环境,直接写入解析逻辑即可,不需要额外调整配置文件。
代码示例
在Function节点中写入以下代码,即可提取所有a标签的href属性为数组:
// 引入全局挂载的cheerio const cheerio = global.get('cheerio'); // 加载请求返回的HTML内容 const $ = cheerio.load(msg.payload); // 提取所有a标签的href属性,输出为数组 const hrefArray = $('a').map((i, el) => $(el).attr('href')).get(); // 此处可直接对hrefArray做过滤、补全域名等处理,直接组装为下一轮GET请求的参数 msg.payload = hrefArray; return msg;
如果需要提取a标签的文本内容,只需把attr('href')替换为text()即可。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

