三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

用html-query提取Hacker News数据:完整示例与解析

用html-query提取Hacker News数据:完整示例与解析

用html-query提取Hacker News数据:完整示例与解析

【免费下载链接】html-queryjq, but for HTML项目地址: https://gitcode.com/gh_mirrors/ht/html-query

html-query是一款类似jq的HTML解析工具,让你能够轻松从HTML文档中提取和转换数据。本文将通过一个实际案例,展示如何使用html-query快速提取Hacker News网站的文章信息,包括标题、链接和元数据等关键内容。

📋 准备工作:安装html-query

首先需要安装html-query工具。你可以通过以下步骤获取源码并编译:

git clone https://gitcode.com/gh_mirrors/ht/html-query cd html-query cargo build --release

编译完成后,可执行文件将位于target/release/html-query路径下。

🔍 认识Hacker News页面结构

项目中提供了一个Hacker News的示例HTML文件:crates/html-query-web-ui/src/examples/hn.html。通过查看该文件,我们可以发现文章信息主要包含在class为athing的表格行元素中,每个条目包含标题、链接、作者和发布时间等信息。

💡 基础示例:提取文章标题和链接

项目的示例配置文件crates/html-query-web-ui/src/examples/examples.json中提供了两个实用的查询表达式。第一个表达式用于提取文章标题和链接:

{ "expression": "{posts: .athing | [ {title: .titleline > a, url: .titleline > a | @(href)} ] }", "description": "Hacker news titles" }

这个表达式的含义是:

  • 选择所有class为athing的元素
  • 对每个元素提取标题(titleline类下的a标签文本)
  • 提取对应链接(a标签的href属性)
  • 将结果组织为包含posts数组的JSON对象

🚀 高级示例:获取完整文章信息

第二个示例表达式则提取更完整的文章信息,包括作者和发布时间:

{ "expression": "{posts: .athing | [{href: .titleline > a | @(href), title: .titleline > a, meta: @sibling(1) | {user: .hnuser, posted: .age | @(title) }}]}", "description": "Full hacker news information" }

这个高级查询增加了:

  • 使用sibling(1)选择下一个兄弟元素(包含元数据的行)
  • 提取作者信息(hnuser类的文本)
  • 提取发布时间(age类元素的title属性)

📸 实际运行效果

下面是使用html-query提取Hacker News数据的终端演示:

通过这个工具,你可以轻松将HTML页面转换为结构化的JSON数据,为后续的数据分析或应用开发提供便利。

🎯 总结

html-query提供了一种简洁高效的方式来解析HTML文档,特别适合从网页中提取结构化数据。通过本文介绍的Hacker News示例,你可以快速掌握其基本用法,并将其应用到自己的项目中。无论是数据采集、网页分析还是自动化测试,html-query都能成为你的得力助手。

如果你想了解更多查询语法和高级用法,可以查看项目的源代码和示例文件,开始你的HTML数据提取之旅吧!

【免费下载链接】html-queryjq, but for HTML项目地址: https://gitcode.com/gh_mirrors/ht/html-query

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表