Nodejs工具分享:用来从HTML文档中提取JSON数据
Nodejs工具分享:用来从HTML文档中提取JSON数据
Temme在 CSS/jQuery 选择器语法上添加了一些自定义的语法, 用于从 HTML 文档中提取想要的 JSON 数据. Temme 基于 cheerio, 支持一次性选取多个字段或者一个列表, 比较适用于已经使用 cheerio 的 Node 爬虫.
最近和 puppeteer 配合使用感觉还是蛮爽的, 打开一个网页, 写一个选择器就可以直接选取出所有想要的 JSON 数据了😄. 欢迎 fork&star, 或者提一些改进意见
这个方式挺有意思的! 不过要是命令行能很好的支持就好了。。。
之前用 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 提供了多种强大的工具和库,其中 cheerio
和 jsdom
是两个非常流行的选择。如果你需要处理类似浏览器环境的 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
。希望这个示例能帮到你!