package main
import (
"fmt"
"io"
"net/http"
"net/url"
"strings"
"github.com/PuerkitoBio/goquery"
)
func BingSearch(query string, num_results int) {
// 构造Bing搜索URL
baseURL := "https://www.bing.com/search"
param := url.Values{}
param.Add("q", query)
url := baseURL + "?" + param.Encode()
fmt.Println("搜索URL:", url)
// 创建HTTP客户端
client := &http.Client{}
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")
req.Header.Set("Accept-Language", "en-US,en;q=0.5")
req.Header.Set("Referer", "https://www.bing.com/")
// 发送请求
resp, err := client.Do(req)
if err != nil {
fmt.Println("请求失败:", err)
return
}
defer resp.Body.Close()
// 读取响应体
body, _ := io.ReadAll(resp.Body)
// 使用goquery解析HTML
doc, _ := goquery.NewDocumentFromReader(strings.NewReader(string(body)))
// 提取搜索结果
doc.Find(".b_algo").Each(func(i int, s *goquery.Selection) {
if i >= num_results {
return
}
title := s.Find("h2").Text()
link, _ := s.Find("a").Attr("href")
snippet := s.Find(".b_algoinfo").Text()
fmt.Printf("结果 %d:\n", i+1)
fmt.Println("标题:", title)
fmt.Println("链接:", link)
fmt.Println("摘要:", snippet)
fmt.Println("----------------")
})
}
```go