• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

go爬虫

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
package main

import (
	"fmt"
	"github.com/antchfx/htmlquery"
	"io/ioutil"
	"net/http"
	"os"
	"regexp"
	"strings"
	"sync"
	"time"
)
var wg sync.WaitGroup
func main() {

	var url string = "https://haomooc.com/xiaoxue-read-2991.html"

	resp, _ := http.Get(url)

	defer resp.Body.Close()

	doc, _ := htmlquery.Parse(resp.Body)
	list := htmlquery.Find(doc, "//div[@class='dxs-l-b']//a")
	for _, li := range list {
		href := htmlquery.SelectAttr(li, "href")
		strings.Replace(href, " ", "", -1)
		title := htmlquery.SelectAttr(li,"title")
		strings.Replace(title, " ", "", -1)
		fmt.Printf("%s\n", title)
		fmt.Printf("%s\n", href)
		video := getVideo(href)
		wg.Add(1)
		//saveVideo(title,video)
		fmt.Printf("%s\n", video)
	}

	wg.Wait()
}

func getVideo(url string) string  {
	time.Sleep(time.Second*1)
	resp, _ := http.Get(url)

	bytesContent, _ := ioutil.ReadAll(resp.Body)

	var reEmail = `(https://video.haomooc.com/.*.mp4)`

	re := regexp.MustCompile(reEmail)
	list := re.FindAllStringSubmatch(string(bytesContent), -1)

	var result string

	for _,v := range list {
		if v != nil{
			result = v[1]
		}
	}
	strings.Replace(result, " ", "", -1)
	return result
}
func PathExists(path string) (bool, error) {

	_, err := os.Stat(path)
	if err == nil {
		return true, nil
	}
	if os.IsNotExist(err) {
		return false, nil
	}
	return false, err
}

func saveVideo(title string ,url string)  {

	fmt.Printf(title,url)
	path := "/www/shell/video/"+title+".mp4"
	b, err := PathExists(path)
	if err != nil {
		fmt.Printf("PathExists(%s),err(%v)\n", path, err)
	}
	if b {
		fmt.Printf("path %s 存在\n", path)
	} else{
		fmt.Println("save video "+title )
		fmt.Printf("%s",url)
		// Get the data
		resp, err := http.Get(url)
		if err != nil {
			panic(err)
		}
		defer resp.Body.Close()

		data, err := ioutil.ReadAll(resp.Body)
		if err != nil {
			panic(err)
		}
		ioutil.WriteFile(path, data, 0644)
		defer wg.Done()
	}


}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
kafkagoproducer启动基本配置发布时间:2022-07-10
下一篇:
进程、线程、轻量级进程、协程与 go 的 goroutine发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap