Snabbstart: Sök på webben med rest-API:et för webbsökning i Bing och Go
Varning
Den 30 oktober 2020 flyttade Bing-sökning API:er från Azure AI-tjänster till Bing-sökning Services. Den här dokumentationen tillhandahålls endast som referens. Uppdaterad dokumentation finns i dokumentationen för API:et för Bing-sökning. Anvisningar om hur du skapar nya Azure-resurser för Bing-sökning finns i Skapa en Bing-sökning resurs via Azure Marketplace.
Använd den här snabbstarten för att göra ditt första anrop till API:et för webbsökning i Bing. Det här Go-programmet skickar en sökbegäran till API:et och visar JSON-svaret. Även om det här programmet är skrivet i Go är API:et en RESTful-webbtjänst som är kompatibel med de flesta programmeringsspråk.
Kodexemplen i den här snabbstarten kräver endast kärnbibliotek. det finns inga externa beroenden.
Förutsättningar
Här följer några saker som du behöver innan du kör den här snabbstarten:
- Go-binärfiler
- En prenumerationsnyckel
Skapa en Azure-resurs
Börja använda API:et för webbsökning i Bing genom att skapa någon av följande Azure-resurser:
- Tillgänglig via Azure Portal tills du tar bort resursen.
- Använd den kostnadsfria prisnivån för att prova tjänsten och uppgradera senare till en betald nivå för produktion.
- Tillgänglig via Azure Portal tills du tar bort resursen.
- Använd samma nyckel och slutpunkt för dina program i flera Azure AI-tjänster.
Skapa ett projekt och importera kärnbibliotek
Skapa ett nytt Go-projekt i valfri IDE eller redigeringsprogram. net/http
Importera sedan för begäranden, ioutil
för att läsa svaret time
och encoding/json
för att hantera JSON och fmt
för att skriva utdata.
package main
import (
"fmt"
"net/http"
"io/ioutil"
"time"
"encoding/json"
)
Skapa en struct för att formatera sökresultaten
Structen BingAnswer
formaterar de data som anges i svaret.
// This struct formats the answers provided by the Bing Web Search API.
type BingAnswer struct {
Type string `json:"_type"`
QueryContext struct {
OriginalQuery string `json:"originalQuery"`
} `json:"queryContext"`
WebPages struct {
WebSearchURL string `json:"webSearchUrl"`
TotalEstimatedMatches int `json:"totalEstimatedMatches"`
Value []struct {
ID string `json:"id"`
Name string `json:"name"`
URL string `json:"url"`
IsFamilyFriendly bool `json:"isFamilyFriendly"`
DisplayURL string `json:"displayUrl"`
Snippet string `json:"snippet"`
DateLastCrawled time.Time `json:"dateLastCrawled"`
SearchTags []struct {
Name string `json:"name"`
Content string `json:"content"`
} `json:"searchTags,omitempty"`
About []struct {
Name string `json:"name"`
} `json:"about,omitempty"`
} `json:"value"`
} `json:"webPages"`
RelatedSearches struct {
ID string `json:"id"`
Value []struct {
Text string `json:"text"`
DisplayText string `json:"displayText"`
WebSearchURL string `json:"webSearchUrl"`
} `json:"value"`
} `json:"relatedSearches"`
RankingResponse struct {
Mainline struct {
Items []struct {
AnswerType string `json:"answerType"`
ResultIndex int `json:"resultIndex"`
Value struct {
ID string `json:"id"`
} `json:"value"`
} `json:"items"`
} `json:"mainline"`
Sidebar struct {
Items []struct {
AnswerType string `json:"answerType"`
Value struct {
ID string `json:"id"`
} `json:"value"`
} `json:"items"`
} `json:"sidebar"`
} `json:"rankingResponse"`
}
Deklarera main-funktionen och definiera variabler
Den här koden deklarerar huvudfunktionen och anger de variabler som krävs:
För värdet
endpoint
kan du använda den globala slutpunkten i följande kod eller använda den anpassade underdomänslutpunkten som visas i Azure Portal för resursen.Bekräfta att slutpunkten är korrekt och ersätt värdet
token
med en giltig prenumerationsnyckel från ditt Azure-konto.Du kan också anpassa sökfrågan genom att ersätta värdet för
searchTerm
.
// Declare the main function. This is required for all Go programs.
func main() {
// Verify the endpoint URI and replace the token string with a valid subscription key.
const endpoint = "https://api.cognitive.microsoft.com/bing/v7.0/search"
token := "YOUR-ACCESS-KEY"
searchTerm := "Microsoft Cognitive Services"
// The remaining code in this quickstart goes in the main function.
}
Skapa en begäran
Den här koden deklarerar HTTP-begäran, infogar huvud och nyttolast samt instansierar klienten.
// Declare a new GET request.
req, err := http.NewRequest("GET", endpoint, nil)
if err != nil {
panic(err)
}
// Add the payload to the request.
param := req.URL.Query()
param.Add("q", searchTerm)
req.URL.RawQuery = param.Encode()
// Insert the request header.
req.Header.Add("Ocp-Apim-Subscription-Key", token)
// Instantiate a client.
client := new(http.Client)
Skapa en begäran
Använd den här koden för att anropa API för webbsökning i Bing och stänga anslutningen när ett svar har returnerats.
// Send the request to Bing.
resp, err := client.Do(req)
if err != nil {
panic(err)
}
// Close the connection.
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
Hantera svaret
Använd den struct som vi skapade tidigare för att formatera svaret och skriva ut sökresultaten.
// Create a new answer.
ans := new(BingAnswer)
err = json.Unmarshal(body, &ans)
if err != nil {
fmt.Println(err)
}
// Iterate over search results and print the result name and URL.
for _, result := range ans.WebPages.Value {
fmt.Println(result.Name, "||", result.URL)
}
Färdigställa allt
Det sista steget är att verifiera koden och köra den. Om du vill jämföra din kod med vår finns det fullständiga programmet här:
package main
import (
"fmt"
"net/http"
"io/ioutil"
"time"
"encoding/json"
)
// The is the struct for the data returned by Bing.
type BingAnswer struct {
Type string `json:"_type"`
QueryContext struct {
OriginalQuery string `json:"originalQuery"`
} `json:"queryContext"`
WebPages struct {
WebSearchURL string `json:"webSearchUrl"`
TotalEstimatedMatches int `json:"totalEstimatedMatches"`
Value []struct {
ID string `json:"id"`
Name string `json:"name"`
URL string `json:"url"`
IsFamilyFriendly bool `json:"isFamilyFriendly"`
DisplayURL string `json:"displayUrl"`
Snippet string `json:"snippet"`
DateLastCrawled time.Time `json:"dateLastCrawled"`
SearchTags []struct {
Name string `json:"name"`
Content string `json:"content"`
} `json:"searchTags,omitempty"`
About []struct {
Name string `json:"name"`
} `json:"about,omitempty"`
} `json:"value"`
} `json:"webPages"`
RelatedSearches struct {
ID string `json:"id"`
Value []struct {
Text string `json:"text"`
DisplayText string `json:"displayText"`
WebSearchURL string `json:"webSearchUrl"`
} `json:"value"`
} `json:"relatedSearches"`
RankingResponse struct {
Mainline struct {
Items []struct {
AnswerType string `json:"answerType"`
ResultIndex int `json:"resultIndex"`
Value struct {
ID string `json:"id"`
} `json:"value"`
} `json:"items"`
} `json:"mainline"`
Sidebar struct {
Items []struct {
AnswerType string `json:"answerType"`
Value struct {
ID string `json:"id"`
} `json:"value"`
} `json:"items"`
} `json:"sidebar"`
} `json:"rankingResponse"`
}
// Verify the endpoint URI and replace the token string with a valid subscription key.
func main() {
const endpoint = "https://api.cognitive.microsoft.com/bing/v7.0/search"
token := "YOUR-ACCESS-KEY"
searchTerm := "Microsoft Cognitive Services"
// Declare a new GET request.
req, err := http.NewRequest("GET", endpoint, nil)
if err != nil {
panic(err)
}
// Add the payload to the request.
param := req.URL.Query()
param.Add("q", searchTerm)
req.URL.RawQuery = param.Encode()
// Insert the request header.
req.Header.Add("Ocp-Apim-Subscription-Key", token)
// Create a new client.
client := new(http.Client)
// Send the request to Bing.
resp, err := client.Do(req)
if err != nil {
panic(err)
}
// Close the response.
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
// Create a new answer.
ans := new(BingAnswer)
err = json.Unmarshal(body, &ans)
if err != nil {
fmt.Println(err)
}
// Iterate over search results and print the result name and URL.
for _, result := range ans.WebPages.Value {
fmt.Println(result.Name, "||", result.URL)
}
}
Exempel på JSON-svar
Svar från API för webbsökning i Bing returneras som JSON. Det här exempelsvaret har formaterats med hjälp BingAnswer
av structen och visar result.Name
och result.URL
.
Microsoft Cognitive Services || https://www.microsoft.com/cognitive-services
Cognitive Services | Microsoft Azure || https://azure.microsoft.com/services/cognitive-services/
What is Microsoft Cognitive Services? | Microsoft Docs || https://learn.microsoft.com/azure/ai-services/Welcome
Microsoft Cognitive Toolkit || https://www.microsoft.com/en-us/cognitive-toolkit/
Microsoft Customers || https://customers.microsoft.com/en-us/search?sq=%22Microsoft%20Cognitive%20Services%22&ff=&p=0&so=story_publish_date%20desc
Microsoft Enterprise Services - Microsoft Enterprise || https://enterprise.microsoft.com/en-us/services/
Microsoft Cognitive Services || https://westus.dev.cognitive.microsoft.com/docs/services/563879b61984550e40cbbe8d/operations/563879b61984550f30395236
Cognitive Services - msdn.microsoft.com || https://msdn.microsoft.com/magazine/mt742868.aspx