【從零開始學(xué)Go】使用goquery爬取全網(wǎng)VIP影視資源在線觀看地址

goquery官方文檔地址
會用jquery的,goquery基本可以1分鐘上手

goquery常用方法

Eq(index int) *Selection    //根據(jù)索引獲取某個節(jié)點集
First() *Selection          //獲取第一個子節(jié)點集
Last() *Selection           //獲取最后一個子節(jié)點集
Next() *Selection           //獲取下一個兄弟節(jié)點集
NextAll() *Selection        //獲取后面所有兄弟節(jié)點集
Prev() *Selection           //前一個兄弟節(jié)點集
Get(index int) *html.Node   //根據(jù)索引獲取一個節(jié)點
Index() int                 //返回選擇對象中第一個元素的位置
Slice(start, end int) *Selection //根據(jù)起始位置獲取子節(jié)點集
Each(f func(int, *Selection)) *Selection //遍歷
EachWithBreak(f func(int, *Selection) bool) *Selection //可中斷遍歷
Map(f func(int, *Selection) string) (result []string) //返回字符串?dāng)?shù)組
Attr(), RemoveAttr(), SetAttr() //獲取,移除,設(shè)置屬性的值
AddClass(), HasClass(), RemoveClass(), ToggleClass()
Html() //獲取該節(jié)點的html
Length() //返回該Selection的元素個數(shù)
Text() //獲取該節(jié)點的文本值
Children() //返回selection中各個節(jié)點下的孩子節(jié)點
Contents() //獲取當(dāng)前節(jié)點下的所有節(jié)點
Find() //查找獲取當(dāng)前匹配的元素
Next() //下一個元素
Prev() //上一個元素

代碼

package main

import (
    "fmt"
    "github.com/PuerkitoBio/goquery"
    "log"
    "net/http"
    "os"
    "strconv"
    "strings"
)

// 電影列表地址
var url="http://zuikzy.cc/?m=vod-type-id-PAGE.html";
const YUMING  = "http://zuikzy.cc/"


//  爬蟲電影網(wǎng)站資源 添加到數(shù)據(jù)庫
func SaveVideo(page int){

    // 如果n為-1,則全部替換;如果 old 為空
    movieurl:=strings.Replace(url,"PAGE",strconv.Itoa(page),-1)
    log.Println(fmt.Sprintf("【開始爬取電影,頁碼:%d  請求地址為 %s 】",page,movieurl))
    res, err := http.Get(movieurl)
    checkErr(err,"【爬取網(wǎng)站地址請求異常 】")
    if res.StatusCode != 200 {
        log.Fatalf("status code error: %d %s", res.StatusCode, res.Status)
    }
    doc, err := goquery.NewDocumentFromReader(res.Body)
    checkErr(err,"爬取成功,解析html異常")

    doc.Find(".DianDian").Each(func(j int, tr *goquery.Selection) {
        title:=tr.Find("td").Eq(0).Text()  //標(biāo)題
        detailsLink,_:=tr.Find("td").Eq(0).Find("a").Eq(0).Attr("href")  //詳情頁地址

        types:=tr.Find("td").Eq(1).Text()  // 電影類型

        // 爬取播放地址和詳情鏈接
        res, err= http.Get(YUMING+detailsLink)
        checkErr(err,"【爬取電影: %s  異?!?)
        if res.StatusCode != 200 {
            log.Fatalf("status code error: %d %s", res.StatusCode, res.Status)
        }
        doc,_= goquery.NewDocumentFromReader(res.Body)

        //imgpath,_:=doc.Find(".videoPic img").Eq(0).Attr("src")
        //reamrk:=doc.Find(".movievod").Eq(1).Text();
        palyLink:=doc.Find(".contentURL li").Eq(1).Text()

        palyLink=strings.Replace(palyLink,"$","-",-1)

        log.Println(fmt.Sprintf("標(biāo)題:%s  類型 %s 播放地址  %s ",title,types,palyLink))

        tracefile(fmt.Sprintf("標(biāo)題:%s  類型 %s 播放地址  %s ",title,types,palyLink))


    })
    defer res.Body.Close()
}

func main()  {
    for i := 1; i < 10; i++ {
        SaveVideo(i)
    }
}

func tracefile(str_content string)  {
    // // 讀寫模式打開文件 如果不存在將創(chuàng)建一個新文件 寫操作時將數(shù)據(jù)附加到文件尾部
    fd,_:=os.OpenFile("爬取全網(wǎng)VIP電影在線觀看.txt",os.O_RDWR|os.O_CREATE|os.O_APPEND,0644)
    fd_content:=strings.Join([]string{str_content,"\n"},"")
    buf:=[]byte(fd_content)
    fd.Write(buf)
    fd.Close()
}


// 錯誤檢查
func checkErr(err error,msg string) {
    if err != nil {
        fmt.Println(msg,err)
    }
}

爬取結(jié)果,復(fù)制地址到瀏覽即可在線播放

標(biāo)題:神醫(yī) [高清]
    類型 劇情片 播放地址  高清-https://zkgn.wb699.com/share/4bUkbVK2CRMgHeUo 
標(biāo)題:匹諾曹 [高清]
    類型 愛情片 播放地址  高清-https://zkgn.wb699.com/share/v5339kxgH65mjfn8 
標(biāo)題:等風(fēng)來 [高清]
    類型 喜劇片 播放地址  高清-https://zkgn.wb699.com/share/7KE8MG7uiDVCbLvg 
標(biāo)題:相見恨晚 [德語1080P]
    類型 喜劇片 播放地址  德語1080P-https://zkgn.wb699.com/share/dpfgCBaQzS7HPJh1 
標(biāo)題:都市灰姑娘 [德語1080P]
    類型 劇情片 播放地址  德語1080P-https://zkgn.wb699.com/share/FPucBGxQy30QpzQ7 
標(biāo)題:米婭和白獅 [BD中英雙字]
    類型 劇情片 播放地址  BD中英雙字-https://zkgn.wb699.com/share/uLiLFpOTGlfEBz71 

源碼地址

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,809評論 1 45
  • 前端知識結(jié)構(gòu)https://github.com/JacksonTian/fks Web前端開發(fā)大系概覽https...
    柴東啊閱讀 1,170評論 0 10
  • 1-------- 走進(jìn)前端 2-------- jQuery 3-------- CSS 4-------- A...
    依依玖玥閱讀 2,424評論 0 34
  • 今日作業(yè): 復(fù)盤《真我與小我》的課程 1.覺察自己的生活日常,小我居多還是真我居多? 小我居多,占比五分之四。真我...
    葉子_早起設(shè)計師閱讀 311評論 0 1
  • python 賦值語句:在python中可以同步賦值,既 〈變量1〉,...,〈變量N〉=〈表達(dá)式1〉,...,〈...
    5c8e2b8217ae閱讀 457評論 0 1

友情鏈接更多精彩內(nèi)容