网络数据抓取神器 Pipet
项目简介
Pipet 是一个基于命令行的网络抓取工具,支持 HTML 解析、JSON 解析和客户端 JavaScript 评估。它依赖于现有工具如 curl,并使用 Unix 管道扩展功能。您可以用 Pipet 跟踪发货情况、获取音乐会门票通知、股票价格变化等信息。
快速开始
创建一个名为 hackernews.pipet
的文件,内容如下:
curl https://news.ycombinator.com/
.title .titleline
span > a
.sitebit a
然后运行:
go run github.com/bjesus/pipet/cmd/pipet@latest hackernews.pipet
或者安装 Pipet 并运行:
pipet hackernews.pipet
在终端中查看所有最新的黑客新闻!
安装方式
预建
从 版本页面 下载最新版本,使用以下命令赋予执行权限:
chmod +x pipet
然后运行:
./pipet
编译
此方法需要安装 Go。使用以下命令安装 Pipet:
go install github.com/bjesus/pipet/cmd/pipet@latest
或者可以运行而无需安装:
go run github.com/bjesus/pipet/cmd/pipet@latest
发行版
Pipet 目前支持 Arch Linux、Homebrew 和 Nix:
brew tap bjesus/pipet && brew install pipet
用法
Pipet 唯一需要的参数是 .pipet
文件的路径,其他命令行标志包括:
--json
,-j
- 输出为 JSON(默认值:false)--template value
,-t value
- 指定模板文件路径--separator value
,-s value
- 设置文本输出的分隔符--max-pages value
,-p value
- 最大抓取页面数(默认值:3)--interval value
,-i value
- X 秒后重新运行 Pipet--on-change value
,-c value
- 新结果时运行的命令--verbose
,-v
- 启用详细日志记录(默认值:false)--help
,-h
- 显示帮助
Pipet 文件结构
Pipet 文件描述从何处及如何获取数据,包含多个块。以 //
开头的行为注释。每个块包含:
- 资源 - 第一行是 URL 和抓取工具
- 查询 - 接下来的几行是选择器
- 下一页 - 以
>
开头的可选行,描述“下一页”的选择器
示例 Pipet 文件
// Read Wikipedia's "On This Day"
curl https://en.wikipedia.org/wiki/Main_Page
div#mp-otd li
body
div#mp-tfa > p > b > a
// Get the weather in Alert, Canada
curl https://wttr.in/Alert%20Canada?format=j1
current_condition.0.FeelsLikeC
current_condition.0.FeelsLikeF
// Check how popular the Pipet repo is
playwright https://github.com/bjesus/pipet
Array.from(document.querySelectorAll('.about-margin .Link')).map(e => e.innerText.trim()).filter(t=> /^\d/.test(t) )