为什么
在和AI交互的过程中,我们经常需求获取外部网页的内容。这个问题看起来很简单,但实际上却需要注意不少点:
- 直接抓取网页返回的是HTML,里边包含大量的样式、脚本和内容无关的内容
- AI 模型的上下文窗口只有几K,虽然现在也有128K~200K的模型了,但Token单价会翻上好几倍
因此,我们开发了 fxd-app-fetch。
是什么
fxd-app-fetch 包含两个方法,main 方法用于获取 html 网页,json 方法用于获取 json 数据。
其中 main 方法采用无头浏览器打开网页获取完整的HTML,然后用 Readability 算法分析整个页面的正文部分,最终将其转换为 markdown 输出。
你也可以通过指定 output 参数来干预细节处理:
- output=raw :直接返回页面的完整HTML
- output=readable :返回通过 Readbility 算法提取后的HTML
- output=markdown:返回通过 Readbility 算法提取后并转换的 Markdown
- output=html:返回简化版的HTML,只保留其中的id、class和data-*参数,用于分析界面结构(例如生成selector)
如何使用
fxd-app-fetch 是一个 fxd app,你可以通过 fxd-cli 或者 FlowDeer 运行它。
在安装完成 fxd-cli 之后 ,你可以通过以下命令直接安装 fxd-app-fetch
fxd _install fxd-app-fetch 然后运行帮助命令,可以查看它的方法和对应的参数:
fxd fetch help
Version:
1.0.8
Usage:
fxd fetch [command] [options]
Command - main:
--url <string> 要获取的页面 URL (default: https://ftqq.com) (required)
--format <string> 返回数据格式 (default: text)
--output <string> 输出数据格式 (default: markdown)
--timeout <number> 超时时间 (default: 5000)
--headless <boolean> 是否启用后台模式 (default: true)
--user <string> 用户名 (default: default)
--wait_type <string> 等待类型 (default: domcontentloaded)
Command - json:
--url <string> 要获取的页面 URL (default: https://ftqq.com) (required)
--format <string> 返回数据格式 (default: text)
--timeout <number> 超时时间 (default: 5000) 使用实例
抓取并以json方式返回内容:
fxd fetch --url="https://ftqq.com" --format="json"
{
"content_format": "markdown",
"content": "时间充足的同学可以一页一页往下看。着急找东西的同学可以直接进入[分类目录](https://ftqq.com/cloumns/)。\n\n本网站为个人作品集,不开放评论,日常更新和互动请到[微博](https://weibo.com/easy)...)"
} 你也可以将其保存到文件供其他应用使用:
fxd fetch --url="https://ftqq.com" --format="json" > data.json