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