Golang实现并发版网络爬虫:斗鱼直播颜值区直播封面图片爬取并保存文件
生活随笔
收集整理的這篇文章主要介紹了
Golang实现并发版网络爬虫:斗鱼直播颜值区直播封面图片爬取并保存文件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
爬取斗魚直播顏值區(qū)直播封面圖片代碼實(shí)現(xiàn):
工作流程:
1. 明確目標(biāo) Url2. 發(fā)送請求,獲取應(yīng)答數(shù)據(jù)包。 http.Get(url)3. 過濾 數(shù)據(jù)。提取有用信息。 4. 使用、分析得到數(shù)據(jù)信息。 ```go package mainimport ("fmt""strconv""net/http""io""regexp""os" )func SaveImg(idx int, url string, page chan int) {path :="C:/itcast/img/" + strconv.Itoa(idx+1) + ".jpg"f, err := os.Create(path)if err != nil {fmt.Println(" http.Get err:", err)return}defer f.Close()resp, err := http.Get(url)if err != nil {fmt.Println(" http.Get err:", err)return}defer resp.Body.Close()buf := make([]byte, 4096)for {n, err2 := resp.Body.Read(buf)if n == 0 {break}if err2 != nil && err2 != io.EOF {err = err2return}f.Write(buf[:n])}page <- idx }func main() {url := "https://www.douyu.com/g_yz"// 爬取 整個頁面,將整個頁面全部信息,保存在resultresult, err := HttpGet(url)if err != nil {fmt.Println("HttpGet err:", err)return}// 解析編譯正則ret := regexp.MustCompile(`data-original="(?s:(.*?))"`)// 提取每一張圖片的 urlalls := ret.FindAllStringSubmatch(result, -1)page := make(chan int)n := len(alls)for idx, imgURL := range alls {//fmt.Println("imgURL:", imgURL[1])go SaveImg(idx, imgURL[1], page)}for i:=0; i<n; i++ {fmt.Printf("下載第 %d 張圖片完成\n", <- page)}} // 獲取一個網(wǎng)頁所有的內(nèi)容, result 返回 func HttpGet(url string) (result string, err error) {resp, err1 := http.Get(url)if err1 != nil {err = err1return}defer resp.Body.Close()buf := make([]byte, 4096)for {n, err2 := resp.Body.Read(buf)if n == 0 {break}if err2 != nil && err2 != io.EOF {err = err2return}result += string(buf[:n])}return }總結(jié)
以上是生活随笔為你收集整理的Golang实现并发版网络爬虫:斗鱼直播颜值区直播封面图片爬取并保存文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tranquil
- 下一篇: UVa 11942 - Lumberja