fxd-app-fetch:网页内容获取APP

为什么

在和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": "时间充足的同学可以一页一页往下看。着急找东西的同学可以直接进入&#91;分类目录](https://ftqq.com/cloumns/)。\n\n本网站为个人作品集,不开放评论,日常更新和互动请到&#91;微博](https://weibo.com/easy)...)"
}

你也可以将其保存到文件供其他应用使用:

fxd fetch --url="https://ftqq.com" --format="json" > data.json