Nodejs工具分享:用来从HTML文档中提取JSON数据

发布于 1周前 作者 ionicwang 来自 nodejs/Nestjs

Nodejs工具分享:用来从HTML文档中提取JSON数据

Temme在 CSS/jQuery 选择器语法上添加了一些自定义的语法, 用于从 HTML 文档中提取想要的 JSON 数据. Temme 基于 cheerio, 支持一次性选取多个字段或者一个列表, 比较适用于已经使用 cheerio 的 Node 爬虫.

playground

豆瓣短评网页例子

最近和 puppeteer 配合使用感觉还是蛮爽的, 打开一个网页, 写一个选择器就可以直接选取出所有想要的 JSON 数据了😄. 欢迎 fork&star, 或者提一些改进意见


8 回复

这个方式挺有意思的! 不过要是命令行能很好的支持就好了。。。
之前用 pup 处理 html, 解析完之后的东西还需要在处理一下, 要是能直接出 json, 就能和 jq 之类的命令一起用了


嗯, 命令行也是一个很合适的使用场景, 之前一直在写爬虫, 想着只是个 Node 的工具. 这几天添上命令行工具.

已经支持命令行了. 用法参考了一下 pup. https://github.com/shinima/temme-showcase#命令行 api

真是速度!

我试用了一下, 发现用了 Object.entties, 只能 7 以上的版本能用么, 版本要求有点高啊!


刚改了改用法, CI 也显示 node 6.12.0 可以用了. https://travis-ci.org/shinima/temme/builds/311130645
重新安装就可以用了😄



真是快!待我使用一段时间后给你使用反馈~

好的, 谢谢. 学生党每天挂在电脑前, 看看书写写代码, 比较闲 o( ̄▽ ̄)ブ

关于从HTML文档中提取JSON数据,Node.js 提供了多种强大的工具和库,其中 cheeriojsdom 是两个非常流行的选择。如果你需要处理类似浏览器环境的 DOM 操作,jsdom 会更适合;而如果你只是需要快速提取数据,cheerio 则更为轻量和高效,它类似于 jQuery 的选择器语法。

下面是一个使用 cheerio 的示例,展示如何从HTML中提取JSON数据:

const cheerio = require('cheerio');
const axios = require('axios');

async function extractJsonFromHtml(url) {
    try {
        const { data } = await axios.get(url);
        const $ = cheerio.load(data);

        // 假设你的JSON数据被包裹在一个特定的script标签中
        const jsonScript = $('script#json-data').html();
        const jsonData = JSON.parse(jsonScript);

        return jsonData;
    } catch (error) {
        console.error('Error fetching or parsing HTML:', error);
    }
}

// 使用示例
const htmlUrl = 'https://example.com/page-with-json-data';
extractJsonFromHtml(htmlUrl).then(json => console.log(json));

在这个例子中,我们使用 axios 来获取HTML内容,然后使用 cheerio 来解析HTML并提取特定script标签中的JSON数据。注意,你需要根据实际的HTML结构来调整选择器。

如果你处理的是复杂的HTML结构或需要完整的DOM API支持,可以考虑使用 jsdom。希望这个示例能帮到你!

回到顶部