SERP API·
对于市场背景的结构化结果,Bing搜索API.
发送一个文档的Bing查询,包括市场,国家,语言,位置,安全搜索和页面化控制. 接收分析的JSON结果收集,准备用于监测和分析.
服务器端 GET API · 开始使用api_key + engine=bing + q · 与数据专家交流
- 市场意识市场,国家和语言
- 产地控制坐标的位置
- 解析输出结构化结果收藏
- 结果窗口抵消和计数
q coffee roasters
mkt en-US
cc
lang us · en
保持在文本中的Bing可见性
加入比恩的证据,而不会平坦化其市场模式.
定义您的市场,语言,来源,过和结果窗口. 返回的对象仍然有用,因为您的应用程序可以保留请求指纹在它们旁边.
01
市场投入仍然明确
保持mkt, cc其他lang视觉,而不是把局域作为一个可替换的值.
02
起源可以是确切的
使用一个名字location在观察需要精确的搜索来源时,支持宽度和长度控制.
03
分析的集合缩短了路径
消耗记录结果对象,而不是在应用程序中建立一个Bing页面解析器.
04
选择性可见
解释缺席广告,图像和其他模块,直到HTTP结果和响应文本说出相反.
- 01
问问咖啡烤箱
- 02
市场en-US
- 03
国家us
- 04
语言en
- 05
起源奥斯
- 06
窗户1–10
产品适应性
在数据集中,当市场意识的可见性属于时,选择Bing搜索.
根据目前的文档,在塑造生产消费者之前,验证代表市场和查询.
强大的适合性
测量Bing作为其自己的搜索表面.
建立关键字,出版商,品牌,付费位置和跨引擎监控在Bing控制器周围,而不是假设另一个引擎的请求模型适用.
市场和语言比较
基于位置和坐标的观测
安全搜索控制的研究
抵消和结果计数窗口
产出合同
解析Bing响应
- 要求输入
api_key·engine=bing·q- 核心输出
分析的 JSON 结果收集
- 条件输出
返回页面所暴露的可选模块
覆盖范围:参数描述所需的搜索环境;它们不会使每个用户,地点,语言或时刻都能看到的结果普遍.
对于Bing请求控制
在比较结果之前,要做出市场简报.
开始查询,然后添加您的应用程序将做出的决定所需的记录市场,来源,过和结果窗口输入.
01 ·查询
搜索意图
提供您的观察应该代表的搜索词.
q
02 ·市场
市场,国家和语言
描述市场和语言背景,使用最终点所支持的不同值.
mkt cc lang
03 ·来源
位置和坐标
在确切来源问题时,提供一个地理target位置以及支持的坐标值.
location lat lon
04 ·过
安全搜索水平
设置属于观察的记录过值.
safesearch
05 ·窗口
抵消和计数
选择结果的抵消和请求结果数,然后将两者都存储在返回位置.
first count
说明性要求GET /v2?api_key=…&engine=bing&q=coffee%20roasters&mkt=en-US&cc=us&lang=en&location=Austin%2C%20Texas&lat=30.2672&lon=-97.7431&safesearch=moderate&first=0&count=10
执行说明:仅使用支持的组合和值目前的Bing API文档随意添加参数,并编码用户提供的每个值.
分析反应模型
保持市场和结果窗口在每个存储的位置旁边.
搜索返回元数据和解析的JSON结果集合.核心和可选的集合应作为一个文本观察的一部分.
01 · 环境
general
响应级别的元数据有助于识别和检查终点返回的搜索观察.
02 · 首次收藏
organic[]
使用根据记录的响应形状返回标题,链接,描述和观察到的位置.
03 ·发现
related[]
当返回的Bing响应暴露了该集合时,相关搜索可以提供查询精炼.
04 · 条件性
module?
广告,图像和其他部分是可选的,依赖于查询的模块;不要假设每一个成功的响应都包含它们.
- 01
1检查HTTP状态.
- 02
2验证记录的响应形式.
- 03
3在请求背景下阅读返回收藏.
- 04
4保持您的产品需求的缺失与空状态.
一个文本要求
From Bing market brief to application-ready objects.
您的应用程序定义了观察并解释返回的数据. WebScrapingAPI运行支持的Bing检索路径和这些边界之间的文档解析.
- 01
定义观察
选择一个明确的问题的Bing查询,市场,国家,语言,来源,安全搜索水平和结果窗口.
- 02
发送服务器端请求
电话
/v2withapi_key,engine=bing,q您需要的文档背景. - 03
验证结果
在解析JSON体之前处理运输错误,时间切除和未成功的HTTP状态.
- 04
存储结果的背景
保存请求指纹,返回的收集,观察时间,以及您自己的方案版本进行可比较分析.
整合
通过服务器发出一个有限的Bing请求.
保持API键在环境变量中,编码查询值,设置明确的时间限,并在使用JSON之前处理HTTP结果.
- 终点
https://serpapi.webscrapingapi.com/v2- 秘密
WSA_API_KEY服务器侧- 要求
api_key+engine=bing+q- 环境
mkt+cc+lang- 安全
- 120秒的时间限制和明确状态处理
: "${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=bing" \
--data-urlencode "q=coffee roasters" \
--data-urlencode "mkt=en-US" \
--data-urlencode "cc=us" \
--data-urlencode "lang=en"import os
import requests
api_key = os.environ.get("WSA_API_KEY")
if not api_key:
raise RuntimeError("WSA_API_KEY is required")
response = requests.get(
"https://serpapi.webscrapingapi.com/v2",
params={
"api_key": api_key,
"engine": "bing",
"q": "coffee roasters",
"mkt": "en-US",
"cc": "us",
"lang": "en",
},
timeout=120,
)
response.raise_for_status()
print(response.json())const apiKey = process.env.WSA_API_KEY;
if (!apiKey) throw new Error("WSA_API_KEY is required");
const url = new URL(
"https://serpapi.webscrapingapi.com/v2?engine=bing&q=coffee%20roasters"
);
url.searchParams.set("api_key", apiKey);
url.searchParams.set("mkt", "en-US");
url.searchParams.set("cc", "us");
url.searchParams.set("lang", "en");
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
$apiKey = getenv("WSA_API_KEY");
if ($apiKey === false || $apiKey === "") {
throw new RuntimeException("WSA_API_KEY is required");
}
$parameters = http_build_query([
"api_key" => $apiKey,
"q" => "coffee roasters",
"mkt" => "en-US",
"cc" => "us",
"lang" => "en",
]);
$client = curl_init(
"https://serpapi.webscrapingapi.com/v2?engine=bing&" . $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);
}
echo $body;package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
apiKey := os.Getenv("WSA_API_KEY")
if apiKey == "" { panic("WSA_API_KEY is required") }
requestURL := "https://serpapi.webscrapingapi.com/v2?" +
"api_key=" + url.QueryEscape(apiKey) +
"&engine=bing&q=" + url.QueryEscape("coffee roasters") +
"&mkt=en-US&cc=us&lang=en"
client := &http.Client{Timeout: 120 * time.Second}
response, err := client.Get(requestURL)
if err != nil { panic(err) }
defer response.Body.Close()
if response.StatusCode < 200 || response.StatusCode >= 300 {
panic(fmt.Sprintf("API status %d", response.StatusCode))
}
body, err := io.ReadAll(response.Body)
if err != nil { panic(err) }
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 BingSearchExample {
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 key = URLEncoder.encode(apiKey, StandardCharsets.UTF_8);
String url = "https://serpapi.webscrapingapi.com/v2?api_key=" + key
+ "&engine=bing&q=coffee%20roasters"
+ "&mkt=en-US&cc=us&lang=en";
var request = HttpRequest.newBuilder()
.uri(URI.create(url))
.timeout(Duration.ofSeconds(120))
.GET().build();
var response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() < 200 || response.statusCode() >= 300) {
throw new IllegalStateException("API status " + response.statusCode());
}
System.out.println(response.body());
}
}using System;
using System.Net;
using System.Net.Http;
var rawApiKey = Environment.GetEnvironmentVariable("WSA_API_KEY");
if (string.IsNullOrWhiteSpace(rawApiKey)) {
throw new InvalidOperationException("WSA_API_KEY is required");
}
var apiKey = WebUtility.UrlEncode(rawApiKey);
var requestUrl =
"https://serpapi.webscrapingapi.com/v2?api_key=" + apiKey +
"&engine=bing&q=coffee%20roasters" +
"&mkt=en-US&cc=us&lang=en";
using var client = new HttpClient {
Timeout = TimeSpan.FromSeconds(120)
};
var response = await client.GetAsync(requestUrl);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());require "net/http"
require "uri"
api_key = ENV["WSA_API_KEY"]
raise "WSA_API_KEY is required" if api_key.nil? || api_key.empty?
uri = URI(
"https://serpapi.webscrapingapi.com/v2?engine=bing&q=coffee%20roasters"
)
parameters = URI.decode_www_form(uri.query) + [
["api_key", api_key],
["mkt", "en-US"],
["cc", "us"],
["lang", "en"]
]
uri.query = URI.encode_www_form(parameters)
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}"
end
puts response.body买家工作流程
使用Bing观察,如果另一个引擎留下了盲点.
设计查询集和对比规则围绕业务问题,然后保存Bing请求指纹,并使用下游的每个结果.
发动机比较
选择您的工作流程所需的引擎和响应模式.
每个儿童终端点都有自己的控制和记录的输出. 设计和测试消费者选择的发动机,而不是假设可替换的请求形状.
分析的收藏
谷歌搜索
位置,语言,设备,垂直和页面控制,用于谷歌结果观测.
进行谷歌比较 →
电流发动机
搜索
市场,国家,语言,来源,安全搜索和结果窗口控制,并进行分析.
Bing
源有效载荷
子子搜索
区域,界面语言,安全搜索和时间控制,使用源SERPHTML在JSON封装中.
比较DuckDuckGo →
源有效载荷
亚兰德克斯搜索
区域,语言,设备,页面和时间控制,使用源SERPHTML在JSON封装中.
德克斯的比较 →
Bing 搜索 API 常见问题
在整合之前解决的问题.
在扩展到代表性要求之外之前,确认输出模式,市场控制,选项性和产品界限.
对于Bing搜索API,返回的是什么?
文档收集包括有机和相关结果;广告,图像和其他模块是可选的,只会显示返回的Bing页面暴露它们.
什么控制器定义了Bing市场?
对于一个市场,使用mkt,国家背景,语言的lang,以及一个精确的搜索来源的lat和lon.它们描述了请求的不同部分,因此保留您每次存储的观察时的值.
如何控制页面的首页和数值?
第一个参数设置结果的偏移和数值要求结果窗口的大小. 存储两个值,以返回位置,以便不将单独的页面进行比较,好像它们是相同的观察.
缺失结果模块意味着请求失败了吗?
首先检查HTTP状态和记录错误体.当 Bing 页面未显示出所提供的查询和文本的相应结果模块时,成功的响应可以省略可选的集合.
我可以使用Bing安全搜索过吗?
根据要求所要求的过水平使用记录的安全搜索参数. 随着观察保留该值,因为改变它可能会改变返回的结果和模块.
如何与抓取 API区别?
搜索API接受Bing特定搜索环境,并返回记录的元数据 plus解析结果收集. 抓取 API检索一个符合条件的公开网页,将提取和下游数据模型与您的应用程序.