package main
import (
"fmt"
"net/http"
"sync"
"github.com/PuerkitoBio/goquery"
)
func main() {
// 定义urls数组,包含要爬取的多个网页的URL
urls := []string{
"https://www.xp.cn/using.html",
"https://www.xp.cn/advise.html",
"https://www.xp.cn/bug.html",
}
// WaitGroup来等待所有的goroutine执行完毕
var wg sync.WaitGroup
for _, url := range urls {
wg.Add(1)
// 用goroutine来同时爬取这些网页
go func(u string) {
defer wg.Done()
resp, err := http.Get(u)
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
// 解析网页内容
doc, err := goquery.NewDocumentFromReader(resp.Body)
if err != nil {
fmt.Println(err)
return
}
// 获取标题
doc.Find(".pb-20").Each(func(i int, s *goquery.Selection) {
title := s.Find("li p a").Text()
fmt.Printf("%s
", title)
})
}(url)
}
wg.Wait()
}
在实际应用中,我们还可以通过设置代理、使用cookie等方式来提高爬取效率和稳定性。
页面更新:2024-04-19
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号