go包装bing搜索

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
posted @ 2025-10-27 18:17  jiftle  阅读(2)  评论(0)    收藏  举报