SuperAPI AI 工具集

web-scraping

数据与分析

查看项目

更新于 10-15 22:12

技能介绍

用途:从网页抓取并提取结构化数据。三件工具按需取最小者:mq-crawl 负责把 URL 抓取/爬取为 Markdown,自带 JS 渲染、多页爬取与 robots.txt 处理;mq 用类 jq 的选择器过滤或转换 Markdown,或经 -I html 处理 HTML;mq 的 http() 内置函数(需 --allow-net)用于在查询内发请求,适用于 mq-crawl 无法覆盖的 POST、自定义请求头或鉴权场景。

主要能力与用法: 抓取与提取:mq-crawl --depth 0 https://example.com 2>/dev/null 输出页面 Markdown(--depth 0 表示不跟随链接);加 -q 可内联查询,如 mq-crawl --depth 0 -q '.h | to_text()' https://example.com 2>/dev/null。注意 -q 输出始终是 Markdown/纯文本,-f 只格式化 stderr 的统计块,不影响内容;若要 JSON/表格/grep,应去掉 -q 并把页面管道给 mq,例如 mq-crawl --depth 0 https://example.com 2>/dev/null | mq -F json 'select(.link)'。用 select(...) 过滤,如 select(.h.level <= 2)、select(.code.lang == "js")、select(contains("keyword"))。

JS 渲染与多页爬取:mq-crawl --depth 0 --headless --headless-network-idle https://spa.example.com 2>/dev/null;多页用 mq-crawl https://docs.example.com --depth 2 --allowed-domains docs.example.com --concurrency 4 -o ./crawled 2>/dev/null。--headless 需本地 Chrome,或用 --webdriver-url 指定远程 WebDriver;--allowed-domains 是精确匹配列表,需逐个列出子域;-o DIR 每页存一个 Markdown 文件,可用 mq -I null --allow-read 'collection(...)' 聚合,collection 读磁盘故需 --allow-read。

查询内 HTTP:mq --allow-net -I null 'http("get", "https://example.com")' /dev/null;POST 为 http("post", url, "field=value")。http(method, url, body?, headers?),headers 为字典,仅 HTTPS,且始终屏蔽回环/私有/链路本地地址,未传 --allow-net 会报错。提取时可经 from_html() 管道,配合 compact_map() 与显式访问器(get_url()、to_text()、attr())。普通读页优先用 mq-crawl。

已有 HTML 时:curl -s https://example.com | mq -I html '.h | to_text()';-I html 会先转 Markdown,应使用 Markdown 选择器(.link、.h、.text),转换会丢弃容器元素及其 class/id/data-* 属性。要直接查原始 HTML(如 .price、a.download[href]),改用 css()/css_text()/css_attr() 内置函数,需 CLI 启用 css-selector 特性(默认开启);css_attr 对缺该属性的元素返回 null 而非丢弃,便于多个 css_* 调用按位对齐。

限制:mq/mq-crawl 不提供 HTTP 状态码/响应头/耗时,需用 curl -sI 或 curl -w;JSON/XML API 应跳过 mq-crawl,改用 curl -s <url> | mq -I json '...';用 --limit N / --skip N 或 head 限制输出大小;完整参数见 mq-crawl --help / mq --help。