亚兰德克斯搜索 API
为了实现本地搜索搜索,Yandex搜索API.
捕获为特定区域,语言,设备,页面和时间窗口生成的Yandex结果页面.API将请求元数据和源SERP HTML实用载荷返回JSON封面中,以便您的应用程序处理.
服务器端 GET API · 开始使用api_key + engine=yandex + q · 与数据专家交流
- 区域背景亚兰德克斯位置区域识别
- 页面控制语言,设备和页面
- 时间过器在值内记录
- 源响应在 JSON 中的HTML有效载荷
query pizza
region Moscow
lang ru
{
"search_parameters": {
"search_engine": "yandex",
"query": "pizza"
},
"search_results":
"<html>...</html>"
}收获合同的买家可以评估
在整合之前,了解页面的文本,有效载荷和所有权界限.
亚兰德克斯搜索API为产品和数据团队提供了记录请求表面,以便进行本地化页面捕获.您的团队保留了对抽取模型的控制,以及每个观察如何进入下游工作流.
01
区域意图仍然可见
保存Yandex区域ID和语言,以便后来的比较保留其市场背景.
02
演示是故意的
选择记录的设备配置文件和页面号码,而不是把每一个Yandex响应都视为可替换的.
03
响应界限是明确的
计划包含源SERPHTML有效载荷的JSON包裹,而不是假设下游记录模型.
04
计划决定留在你身边
仅提取您的工作流需要的字段,版本该方案,并决定页面变更应该如何处理.
- 01
引擎yandex
- 02
问问pizza
- 03
地区其他
- 04
语言ru
- 05
设备desktop
- 06
页面p 0
- 07
窗户在77内
文件载载的Yandex表面
根据您的区域和演示文本定义的结果页面.
亚当德克斯终端点接受一个搜索查询 plus 选项背景.开始使用代表请求,以您的应用程序实际使用的国家,语言,设备,页面和时间窗口.
地区
亚兰德克斯位置身份证
使用Yandex预期的区域标识符,以影响预期位置的结果页面.
要求的背景 · lr
语言
搜索语言
添加文档语言值到观察中,并通过区域和查询集验证.
请求背景 · lang
演讲
设备配置文件
要求桌面,手机或平板电脑的表现,
请求背景 · 设备
页面窗口
页面和时间过器
选择基于零的结果页面,并在需要时,记录时间范围值.
要求背景 · p / 在内
要求控制
定义您的申请计划观察的Yandex页面.
基本请求指南使用下面所示的查询参数. 只有支持明确的产品或研究要求时添加可选的文本.
搜索意图
问号
在文档化基本请求领域和URL编码空间或特殊字符中传递搜索文本.
q
定位和呈现
区域,语言和设备
设置Yandex位置区域ID,搜索语言,以及文档桌面,手机或平板电脑配置文件.
lr lang device
页面窗口
页面浏览和最新
使用p=0为第一页,并添加支持的时间值,例如过去24小时的77或过去两周的1.
p within
执行说明: use api_key, engine=yandex其他q页面号码是基于零的;它描述了请求页面,而不是在各种背景中普遍的排名.
源有效载荷响应
接收一个JSON封面,然后应用自己的提取合同.
亚兰德克斯搜索API返回响应元数据和源页面表示. 在添加存储,监测或衍生搜索记录之前,设计消费者围绕该边界.
API 响应
包含源 SERP HTML 实用载荷的 JSON 封面.
包裹包括search_parameters对于提交的搜索背景和search_results对于源SERPHTML有效载荷.
在阅读身体之前检查HTTP状态.
仅存储您工作流需要的请求背景和源数据.
处理页面布局变化作为抽取和方案事件.
application/json source payload{ "search_parameters": { "search_engine": "yandex", "yandex_url": "https://www.yandex.com/search/?text=pizza", "query": "pizza" }, "search_results": "<html>...</html>" }Your application
提取和方案维护
您的应用程序拥有从返回的HTML中提取. 当Yandex更新其页面时,您的团队定义衍生的字段,验证规则,方案版本和维护响应.
响应界限
终端点将页面文本和源HTML提供在JSON中.它不定义您的系统可能获得的客户面向记录,排名,警报或业务解释.
一个文本捕捉
From a Yandex query to an owned extraction pipeline in three steps.
您的应用程序定义了页面并消耗了源源的有效载荷. WebScrapingAPI运行了支持的请求路径,在这两个责任之间.
- 01
定义页面文本
选择查询,并添加记录区域,语言,设备,基于零的页面和时间范围输入,您需要观察.
- 02
发送服务器端请求
调用一个受保护的API键和引擎设置到yandex的SERP终端点.设置时间限并显示失败的HTTP状态.
- 03
验证,摘录和版本
阅读JSON封面,保存其请求文本,并通过团队的提取和方案过程运行源 HTML.
整合
通过服务器端堆,请一个安全的Yandex请求.
这些起点将API键存储在环境变量中,发送基本请求查询,使用120秒客户端时间限,并明确未成功的HTTP状态.
- 终点
/v2- 要求
api_key+engine=yandex+q- 秘密
WSA_API_KEY服务器侧- 消费者
- 检查状态,然后读取JSON
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
// engine=yandex; q=pizza
var rawApiKey = Environment.GetEnvironmentVariable("WSA_API_KEY");
if (string.IsNullOrWhiteSpace(rawApiKey)) {
throw new InvalidOperationException("WSA_API_KEY is required");
}
var apiKey = rawApiKey;
using var client = new HttpClient {
Timeout = TimeSpan.FromSeconds(120)
};
var parameters = new Dictionary<string, string> {
["api_key"] = apiKey,
["engine"] = "yandex",
["q"] = "pizza"
};
var query = string.Join("&", parameters.Select(item =>
$"{WebUtility.UrlEncode(item.Key)}={WebUtility.UrlEncode(item.Value)}"));
using var response = await client.GetAsync(
"https://serpapi.webscrapingapi.com/v2?" + query
);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());: "${WSA_API_KEY:?WSA_API_KEY is required}"
curl --get --fail-with-body --max-time 120 \
"https://serpapi.webscrapingapi.com/v2" \
--data-urlencode "api_key=$WSA_API_KEY" \
--data-urlencode "engine=yandex" \
--data-urlencode "q=pizza"package main
import (
"fmt"
"io"
"log"
"net/http"
"net/url"
"os"
"time"
)
func main() {
// engine=yandex; q=pizza
apiKey := os.Getenv("WSA_API_KEY")
if apiKey == "" { panic("WSA_API_KEY is required") }
query := url.Values{
"api_key": {apiKey},
"engine": {"yandex"},
"q": {"pizza"},
}
client := &http.Client{Timeout: 120 * time.Second}
response, err := client.Get(
"https://serpapi.webscrapingapi.com/v2?" + query.Encode(),
)
if err != nil { log.Fatal(err) }
defer response.Body.Close()
body, err := io.ReadAll(response.Body)
if err != nil { log.Fatal(err) }
if response.StatusCode < 200 || response.StatusCode >= 300 {
log.Fatalf("API status %d: %s", response.StatusCode, body)
}
fmt.Println(string(body))
}import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
public final class YandexSearchApiExample {
public static void main(String[] args) throws Exception {
String apiKey = System.getenv("WSA_API_KEY");
if (apiKey == null || apiKey.isBlank()) {
throw new IllegalStateException("WSA_API_KEY is required");
}
String endpoint = "https://serpapi.webscrapingapi.com/v2";
String query = "api_key=" + URLEncoder.encode(
apiKey, StandardCharsets.UTF_8
) + "&engine=yandex&q=pizza";
var client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(120))
.build();
var request = HttpRequest.newBuilder(URI.create(endpoint + "?" + query))
.timeout(Duration.ofSeconds(120))
.GET()
.build();
var response = client.send(
request, HttpResponse.BodyHandlers.ofString()
);
if (response.statusCode() < 200 || response.statusCode() >= 300) {
throw new IllegalStateException(
"API status " + response.statusCode()
);
}
System.out.println(response.body());
}
}
}// engine=yandex; q=pizza
const apiKey = process.env.WSA_API_KEY;
if (!apiKey) throw new Error("WSA_API_KEY is required");
const parameters = new URLSearchParams({
api_key: apiKey,
engine: "yandex",
q: "pizza",
});
const url = new URL(
"https://serpapi.webscrapingapi.com/v2?" + parameters,
);
const response = await fetch(url, {
signal: AbortSignal.timeout(120_000),
});
if (!response.ok) {
throw new Error("API status " + response.status);
}
console.log(await response.json());<?php
// engine=yandex; q=pizza
$apiKey = getenv("WSA_API_KEY");
if ($apiKey === false || $apiKey === "") {
throw new RuntimeException("WSA_API_KEY is required");
}
$parameters = http_build_query([
"api_key" => $apiKey,
"engine" => "yandex",
"q" => "pizza",
]);
$client = curl_init(
"https://serpapi.webscrapingapi.com/v2?" . $parameters
);
curl_setopt_array($client, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 120,
]);
$body = curl_exec($client);
$status = curl_getinfo($client, CURLINFO_RESPONSE_CODE);
$error = curl_error($client);
curl_close($client);
if ($body === false) throw new RuntimeException($error);
if ($status < 200 || $status >= 300) {
throw new RuntimeException("API status " . $status . ": " . $body);
}
echo $body;import os
import requests
api_key = os.environ.get("WSA_API_KEY")
if not api_key:
raise RuntimeError("WSA_API_KEY is required")
# engine=yandex; q=pizza
response = requests.get(
"https://serpapi.webscrapingapi.com/v2",
params={
"api_key": api_key,
"engine": "yandex",
"q": "pizza",
},
timeout=120,
)
response.raise_for_status()
print(response.json())require "net/http"
require "uri"
api_key = ENV["WSA_API_KEY"]
raise "WSA_API_KEY is required" if api_key.nil? || api_key.empty?
# engine=yandex; q=pizza
uri = URI("https://serpapi.webscrapingapi.com/v2")
uri.query = URI.encode_www_form(
api_key: api_key,
engine: "yandex",
q: "pizza"
)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.open_timeout = 10
http.read_timeout = 120
response = http.get(uri.request_uri)
unless response.is_a?(Net::HTTPSuccess)
raise "API status #{response.code}: #{response.body}"
end
puts response.body使用情况
使用文本上 Yandex 页面捕捉源头是正确的起点.
每个工作流程都应该保留其请求指纹,并定义源页变化如何影响抽取,比较,审查和下游决策.
产品选择
根据你的团队需要的反应和操作权,
当源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源源
Multiple engines
家庭 SERP API
进行数据分析,并进行分析.
引擎特定的反应
Current product
亚兰德克斯搜索 API
发送本地化Yandex查询,并在JSON中收到本文 plus的源SERPHTML有效载荷.
亚兰德克斯源页面捕获
General page access
抓取 API
如果您的 target 没有被Yandex 搜索控制器表示,请检索符合条件的公开网页.
公共页面的响应
Managed delivery
托管数据
将查询集,随机,方案,质量过程和交付移动到达成的重复数据程序中.
运营数据合同
产量评估
测试您的申请将依赖于区域页面矩阵.
在选择计划之前,使用代表性的捕捉.包括在范围内的设备和区域中普通,本地化,页面化,时间过,布局变化和失败状态.
FAQ
对于一个基于地面的评估,
根据这些答案,选择产品,然后将当前的Yandex终端文件和代表性请求视为实践的来源.
亚兰德克斯搜索API返回了什么?
在搜索_结果中返回一个 JSON 包裹,包含请求元数据和源 SERP HTML 实用载荷.它不定义下游记录方案.
对于Yandex请求需要哪些值?
发送服务器侧 API 键,设置引擎到yandex,并在q. URL 编码查询文本中传递搜索查询,当它包含空格或特殊字符时.
我如何选择Yandex地区和语言?
对于搜索语言使用 lr, Yandex 位置区域 ID 和 lang. 文件文件中也可以选择 Yandex 域名; 在生产使用之前,验证与代表搜索的组合.
亚兰德克斯页面化是如何工作的?
结果页面使用p.页面计数从0开始,因此p=0请求第一个页面.在比较捕获时,请将p与其余的请求文本保持.
谁从Yandex的有效载荷中提取?
您的应用程序拥有从源 SERP HTML 实用载荷中提取,您的团队拥有衍生式方案和随着Yandex页面布局变化的维护.
如何处理Yandex API错误?
设置明确的客户端截止时间,在使用响应器之前检查HTTP状态,保留足够的请求文本来诊断故障,并且只应适用于工作流的限度复试.