发送请求
/v1/search 接受的查询与您在搜索框中输入的完全相同,另外再加几个参数。它同时支持 GET 和 POST,两种方式的参数相同。
参数
| 名称 | 默认值 | 含义 |
|---|---|---|
query | 必填 | 搜索字符串。语法与网站相同,参见查询语法。 |
page | 1 | 从 1 开始计数。 |
per_page | 100 | 不超过您套餐的行数上限,page × per_page 也是如此:套餐覆盖查询的前 N 行,翻页不能越过这一范围(400 page_too_deep);/v1/account 中以 max_per_page 给出该值。 |
snippets | 关闭 | 设为 1 时返回匹配的文本。消耗代码片段配额。 |
format | json | 六种格式之一,参见响应格式。 |
columns | 取决于格式 | 以逗号分隔,取自 domain、url、rank、ranked、snippets。 |
delimiter | ; / 制表符 | 用于 csv 和 tsv。 |
header | 关闭 | 设为 1 时,在 csv 和 tsv 中加入表头行。 |
GET
curl -H "Authorization: Bearer $KEY" \
"https://api.publicwww.com/v1/search?query=%22angular.min.js%22&page=2&per_page=50"
请记得对查询进行 URL 编码。引号、斜杠和 + 都会影响结果。
POST
参数相同,以 JSON 请求体发送。查询较长或包含多个短语时请使用这种方式:URL 中的多行查询,早在服务器介意之前,就会先触及代理和客户端的长度限制。
curl https://api.publicwww.com/v1/search \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"query": ["\"angular.min.js\"", "\"bootstrap.min.css\""],
"per_page": 50,
"snippets": true}'
短语数组表示所有短语都要匹配,效果与在 query 字符串中用换行分隔它们完全相同。在上面的示例中,含有第一个短语的网站有 278 个,同时含有两个短语的有 99 个。
支持 JSON 类型:查询字符串中需要写 1 的地方,这里可以写 true。同一参数同时出现在 URL 和请求体中时,以请求体为准。
响应
| 字段 | 含义 |
|---|---|
total | 整个索引中匹配的网站数。这是实际计数,而非估算值。 |
total_pages | total 除以 per_page,向上取整。 |
returned | 本页实际包含的行数。 |
truncated | 是否有结果因您套餐的可见排名位次限制而被移除。 |
took_ms | 搜索耗时,单位为毫秒。 |
results | 结果行。 |
结果行
| 字段 | 含义 |
|---|---|
domain | 网站。 |
url | 找到匹配内容的页面;对于 depth: 搜索,它不一定是首页。 |
rank | 排名位置,数值越小越热门。网站没有排名时为 null。 |
ranked | 当且仅当 rank 为 null 时为 false。 |
snippets | 仅在 snippets=1 时返回。最多五组 {"text", "match"},其中 match 是匹配到的内容,text 是该内容及其上下文。 |
分页与批量获取
可以用 page 逐页获取,也可以用较大的 per_page 一次获取全部结果,上限为 /v1/account 中的 max_per_page,付费套餐为一百万。没有单独的导出接口;响应边生成边输出,因此一百万行结果并不需要同时全部保存在内存中。