go 虎牙爬取

package main

import (
	"fmt"
	"github.com/antchfx/htmlquery"
	"io/ioutil"
	"net/http"
)


func main() {

	var url string = "https://www.huya.com/l"

	resp, _ := http.Get(url)

	defer resp.Body.Close()

	doc,_ := htmlquery.Parse(resp.Body)
	list := htmlquery.Find(doc, "//ul[@id='js-live-list']//li")
	for _,li := range list{
		nick := htmlquery.FindOne(li,"//i[@class='nick']/text()")
		//people := htmlquery.FindOne(li,"//i[@class='js-num']/text()")
		//title := htmlquery.FindOne(li,"//a[@class='title']")
		img := htmlquery.FindOne(li,"//a[@class='video-info ']/img/@data-original")
		//fmt.Printf("%s %s %s %s\n",htmlquery.InnerText(nick),htmlquery.InnerText(people),htmlquery.SelectAttr(title,"title"),htmlquery.SelectAttr(img,"data-original"))
		imgurl := htmlquery.SelectAttr(img,"data-original")
		titleString := htmlquery.InnerText(nick)

		savepic(imgurl,titleString)
	}



}


func savepic(url string,name string ) {
	if len(url)<= 0{
		return
	}

	if url[0:2] == "//" {
		url =   "http:"+url
	}

	resp, err := http.Get(url)
	if err !=nil{
		fmt.Println("http error",err)
		return
	}
	content, err1 := ioutil.ReadAll(resp.Body)
	if err1 != nil{
		fmt.Println("read err",err1)
		return
	}

	file := ioutil.WriteFile("./imgs/"+name+".jpg", content, 0777)
	if file != nil {
		fmt.Printf("下载图片%s 失败\n", name)
	} else{
		fmt.Printf("下载图片%s 成功\n", name)
	}

}

  

 

posted @ 2020-08-25 14:56  brady-wang  阅读(139)  评论(0编辑  收藏  举报