# 金融搜索

> 支持关键词、指定域名和时间范围的金融网页搜索

## 接口基本信息

- **接口名称**: `web_search`
- **功能描述**: 金融搜索接口，支持按关键词、指定域名、时间范围和语言区域检索网页结果。可不传关键词，仅根据指定域名检索内容。
- **数据更新频率**: 实时
- **请求方法**: `POST`
- **API 路径**: `https://api.wanxingai.com/v1/web-search/`
- **认证方式**: 请求头携带 `Authorization: Bearer sk-********`

---

## 输入参数说明

| 参数名 | 类型 | 必选 | 默认值 | 描述 | 示例 |
| --- | --- | --- | --- | --- | --- |
| `query` | str | 否 | — | 搜索关键词。可不传关键词，仅根据 `domains` 指定的网站检索内容 | `英伟达 财报 资本开支` |
| `domains` | str | 否 | `""` | 指定检索域名，多个域名用英文逗号分隔 | `sec.gov,nvidia.com` |
| `freshness` | str | 否 | `""` | 时间范围。支持 `oneday`、`oneweek`、`onemonth`、`oneyear`，也支持 `开始时间..结束时间` 自定义范围 | `oneweek` |
| `count` | int | 否 | `10` | 返回结果数量 | `10` |
| `market` | str | 否 | `zh-CN` | 市场区域 | `zh-CN` |
| `set_lang` | str | 否 | `zh` | 返回语言 | `zh` |

---

### freshness 自定义时间示例

```
{
  "freshness": "2020-08-05 18:50:00..2020-08-07 21:52:00"
}
```

---

### 返回数据说明

返回 JSON 对象，格式为 `{"status": 状态码, "message": 结果数据}`；请求失败时返回 `{"status": 状态码, "error": 错误信息}`。

| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| `status` | int | 状态码。`200` 表示成功 |
| `message` | array/object | 搜索结果数据，具体结构以实际返回为准 |
| `error` | str | 错误信息，仅失败时返回 |

---

## 使用示例

```python
import requests

url = "https://api.wanxingai.com/v1/web-search/"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer sk-********"
}
payload = {
    "query": "英伟达 财报 资本开支",
    "domains": "sec.gov,nvidia.com",
    "freshness": "oneweek",
    "count": 10,
    "market": "zh-CN",
    "set_lang": "zh"
}

resp = requests.post(url, json=payload, headers=headers)
print(resp.json())
```

```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();

        String json = """
        {
          "query": "英伟达 财报 资本开支",
          "domains": "sec.gov,nvidia.com",
          "freshness": "oneweek",
          "count": 10,
          "market": "zh-CN",
          "set_lang": "zh"
        }
        """;

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.wanxingai.com/v1/web-search/"))
            .header("Content-Type", "application/json")
            .header("Authorization", "Bearer sk-********")
            .POST(HttpRequest.BodyPublishers.ofString(json))
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
```

```curl
curl -X POST https://api.wanxingai.com/v1/web-search/ \\
  -H "Content-Type: application/json" \\
  -H "Authorization: Bearer sk-********" \\
  -d '{
    "query": "英伟达 财报 资本开支",
    "domains": "sec.gov,nvidia.com",
    "freshness": "oneweek",
    "count": 10,
    "market": "zh-CN",
    "set_lang": "zh"
  }'
```

### 注意事项

1. `query` 非必填；当只需要检索指定网站时，可以只传 `domains`
2. `domains` 多个域名用英文逗号分隔，不需要带 `https://`
3. `freshness` 为空时不限制时间范围；自定义时间范围使用 `开始时间..结束时间` 格式
4. 接口需要鉴权，请在请求头中传入有效 API Key
