更新记录

1.0.2(2022-02-13)

  • 修改路径失败的问题

1.0.1(2022-02-13)

  • 修改路径失败的问题

1.0.0(2021-02-10)

  • 升级为 uni_modules 版本
查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.1.10 app-vue app-nvue
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari

HTML 文本解析器

用于解析请求网络地址得到的text文本,通过HTML的DOM方式获取节点字符数据。

H5需要安装Chrome插件对跨域进行处理,APP就不会有问题。

DOM操作属性说明:

  1. 将请求获取得到的HTML文本text字符串,通过 new HTMLParser(text) 实例化为DOM操作对象。
  2. 实例化的DOM操作对象可以操作属性获取节点的HTML文本字符信息。
属性名 返回类型 默认值 说明
getElementsByTagName Array - 带有指定标签名的对象
getElementsByClassName Array - 带有指定样式名称的对象
getElementById Array - 对拥有指定 id 的第一个对象的引用

使用方式:

script 中引用html-parser.js文件即可

import HTMLParser from "@/uni_modules/html-parser/js_sdk/index.js"

用法:

mounted() {
    // 触发请求数据
    this.parserData().then(res => {
        console.log(res);
    });
},
methods: {
    // 异步等待解析数据
    async parserData() {
        const jsonData = {};
        // 请求数据
        const [error, res] = await uni.request({
            url: 'https://ext.dcloud.net.cn/'
        });
        // 成功返回
        if (res) {
            // 数据存放
            const pluginList = [];
            // 获取HTML文本转DOM操作
            const doc = new HTMLParser(res.data.toString().trim());
            // 选取插件列表内层的HTML文本
            const pluginListText = doc.getElementsByClassName('plugin-list')[0];
            // 获取插件列表数据转DOM操作
            const pluginArrayDoc = new HTMLParser(pluginListText).getElementsByTagName('li');
            // 遍历每个插件对象
            for (let plugin of pluginArrayDoc) {
                // 插件对象
                let pluginObject = {};
                // 插件对象HTML文本转DOM操作
                let pluginDoc = new HTMLParser(plugin);

                // 获取插件标题转DOM操作
                let pluginTitleText = pluginDoc.getElementsByClassName('extend-title')[0].trim();
                let pluginTitleDoc = new HTMLParser(pluginTitleText);
                pluginObject.title = pluginTitleDoc.getElementsByTagName('A')[0].trim();

                // 获取插件下载次数转DOM操作
                let className = 'download';
                if (pluginDoc.getElementsByClassName('buy').length) className = 'buy';
                let numText = pluginDoc.getElementsByClassName(className)[0]['innerHTML'].trim();
                let numTextDoc = new HTMLParser(numText);
                let numTextNum = numTextDoc.getElementsByTagName("A")[0]['innerHTML'].trim();
                pluginObject.num = numTextNum.substr(numTextNum.lastIndexOf(';') + 1);

                // 存入数据
                pluginList.push(pluginObject);
                pluginObject = {};
            }
            // 返回数据
            jsonData.errMsg = "请求成功"
            jsonData.data = pluginList;
        }
        // 失败返回
        if (error) {
            jsonData.errMsg = "暂无数据"
            jsonData.data = "null";
        }
        // 返回数据对象
        return jsonData
    }
}

隐私、权限声明

1. 本插件需要申请的系统权限列表:

需要网络请求获取text文本html,也可以本地html文本解析

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

无,用于将获取到的text文本html转换成节点获取,进行数据爬取。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问