# 构建 URL

遵循这些指南，您可以为爬取任务构建 Baidu、Yandex 或 Wayfair 的 URL。

## **百度**

将作业参数分配到 URL：

{% code overflow="wrap" %}

```
https://<subdomain>.baidu.<domain>/s?ie=utf-8&wd=<query>&rn=<limit>&pn=<calculated_start_page>
```

{% endcode %}

在构建 URL 时，请遵循以下说明：

1. **对搜索词进行编码**：搜索词必须进行 URL 编码。例如，空格应替换为 `%20`，它表示 URL 中的空格字符。
2. **计算起始页**： `start_page` 参数现在对应要跳过的搜索结果数量。使用下列等式计算值 `limit*start_page-limit` 来计算该值。
3. **子域分配**：子域值取决于作业中提供的 user agent 类型。如果 user agent 类型包含 mobile，则子域值应为 `m`。否则，应为 `www`.
4. **查询参数**：根据子域值（`m` 或 `www`），查询词的查询参数应相应调整（`word` 对应 `m` 和 `wd` 对应 `www`).

#### 示例构建的 URL

移动端示例：

```
https://m.baidu.com/s?ie=utf-8&word=test&rn=10&pn=20
```

桌面端示例：

```
https://www.baidu.cn/s?ie=utf-8&wd=test%20query&rn=13
```

#### 等效作业示例

已弃用 `baidu_search` 来源：

```json
{
    "source": "baidu_search",
    "query": "test",
    "domain": "com",
    "limit": 5,
    "start_page": 3,
    "user_agent_type": "desktop"
}
```

已更新 `universal` 来源：

```json
{
    "source": "universal",
    "url": "https://www.baidu.com/s?ie=utf-8&wd=test&rn=5&pn=10",
    "user_agent_type": "desktop"
}
```

## **Yandex**

将作业参数分配到 URL：

{% code overflow="wrap" %}

```
https://yandex.<domain>/search/?text=<query>&numdoc=<limit>&p=<start_page>&lr=<geo_location>
```

{% endcode %}

在构建 URL 时，请遵循以下说明：

1. **对搜索词进行编码**：搜索词必须进行 URL 编码。例如，空格应替换为 `%20`，它表示 URL 中的空格字符。
2. **起始页调整**： `start_page` 的值必须减 1。例如，如果期望的起始页是 3，则 URL 中表示页码的值必须为 `2`.
3. **本地化**：如果域为 `ru` 或 `tr`，则会添加额外的查询参数 `lr` 并带有 `geo_location` 值。对于其他域， `geo_location` 值位于查询参数 `rstr`，其中在值前添加了一个 `-` 符号。
4. **不再支持**：pages 参数不再受支持。必须通过在 URL 中更改当前页值分别提交作业。

#### 构建的 URL 示例

```
https://yandex.ru/search/?text=test&numdoc=5&p=0&lr=100
```

```
https://yandex.com/search/?text=test%201&numdoc=10&p=2&rstr=-100
```

#### 等效作业示例

已弃用 `yandex_search` 来源：

```json
{
    "source": "yandex_search",
    "query": "test",
    "domain": "com",
    "limit": 5,
    "start_page": 3,
    "geo_location": 100,
    "results_language": "en"
}
```

已更新 `universal` 来源：

```json
{
    "source": "universal",
    "url": "https://yandex.ru/search?text=adidas&numdoc=5&p=2&lr=100&lang=en"
}
```

## Wayfair

将作业参数分配到 URL：

{% code overflow="wrap" %}

```
https://www.wayfair.<domain>/keyword.php?keyword=<query>&itemsperpage=<limit>&curpage=<start_page>
```

{% endcode %}

在构建 URL 时，请遵循以下说明：

1. **对搜索词进行编码**：搜索词必须进行 URL 编码。例如，空格应替换为 `%20`，它表示 URL 中的空格字符。
2. **参数**：如果 `limit` 等于 `48` 和 `start_page` 等于 `1`，则必须向 URL 附加以下额外参数：
   1. `command=dosearch`
   2. `new_keyword_search=true`

#### 构建的 URL 示例

```
https://www.wayfair.com/keyword.php?keyword=test&itemsperpage=24&curpage=1
```

{% code overflow="wrap" %}

```
https://www.wayfair.fr/keyword.php?keyword=t%202&itemsperpage=48&curpage=1&command=dosearch&new_keyword_search=true
```

{% endcode %}

#### 等效作业示例

已弃用 `wayfair_search` 来源：

```json
{
   "source": "wayfair_search",
   "query": "test",
   "domain": "com",
   "limit": 5,
   "start_page": 3
}
```

已更新 `universal` 来源：

```json
{
   "source": "universal",
   "url": "https://www.wayfair.com/keyword.php?keyword=room&itemsperpage=5&curpage=10"
}
```
