• 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
    ",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 失败
    ", name)
    	} else{
    		fmt.Printf("下载图片%s 成功
    ", name)
    	}
    
    }
    

      

  • 相关阅读:
    5. Redis持久化
    4.Redis客户端
    3.Redis高级功能
    2.Redis五种数据结构
    1.Redis简介
    32.Mysql Cluster
    suffix ACM-ICPC 2017 Asia Qingdao
    多层BFS
    我想和你们说说java和C++___C加加
    11073 最热门的K个搜索串
  • 原文地址:https://www.cnblogs.com/brady-wang/p/13559698.html
Copyright © 2020-2023  润新知