go爬蟲 goquery 正則

2021-09-27 10:38:59 字數 3431 閱讀 5603

用了goquery 和regexp兩個包

用法如query:

dom,err:=goquery.newdocumentfromreader(strings.newreader(result))

if err!=nil

dom.find(".programlist .cont ul p").each(func(i int, selection *goquery.selection)

})

regexp用法:

// fmt.println(video_cont)

rel2 := regexp.mustcompile(`"title":"流暢","url":"(.*?)"`)

if rel2 == nil

arr2 := rel2.findallstringsubmatch(video_cont,-1) //獲取的資料是二維的切片

// 過濾標題

dom,err:=goquery.newdocumentfromreader(strings.newreader(result))

if err!=nil

dom.find(".programlist .cont ul p").each(func(i int, selection *goquery.selection)

})fmt.println("title:",title)

fmt.println("titles",titles)

// 過濾封面url

imgreg := regexp.mustcompile(`

if imgreg == nil

imgmap := imgreg.findallstringsubmatch(result,-1)

fmt.println("imgmap:",imgmap)

for k,data := range imgmap

}fmt.println("img :",img)

fmt.println("imgs :",imgs)

//找到詳情頁路徑 再爬取**

rel := regexp.mustcompile(`

if rel == nil

arr := rel.findallstringsubmatch(result,-1)

// fmt.println("全部的路徑:",arr)

for _,data := range arr

// fmt.println(video_cont)

rel2 := regexp.mustcompile(`"title":"流暢","url":"(.*?)"`)

if rel2 == nil

arr2 := rel2.findallstringsubmatch(video_cont,-1) //獲取的資料是二維的切片

for _,d := range arr2 }}

fmt.println("path:",path)

fmt.println("paths:",paths)

//把內容寫入到檔案

//讀取網頁的內容 ?

buf := make(byte,1024*4)

for

result += string(buf[:n])

} return

}func insertdata(img string, title string, url string, year string)

fmt.println("img的的長度是:",len(img))

fmt.println("title的的長度是:",len(title))

fmt.println("url",len(url))

for i:=0;i

result,err := db.exec("insert into collectionmwd(cover,title,videourl,years) values(?,?,?,?)",img[i],title[i],url[i],year);

if err != nil

lastinsertid,err := result.lastinsertid()

if err != nil

// rowsaffected,err := result.rowsaffected()

}// fmt.println("rowsaffected:",rowsaffected)

}func db() (db *sql.db,err error)

fmt.println("資料庫執行到這裡了")

return

}

GoLang 爬蟲 資料清洗(goquery)

當我們成功向 傳送http請求的時候,會給回我們響應的網頁內容。網頁內容以html 形式表示,因此我們需要從html 中提取目標資料。資料清洗方式大致分為三種 字串操作 擷取,替換等操作 正規表示式和html解析。字串操作和正規表示式就不再詳細講述,這屬於golang的基礎語法,本文重點講述gola...

Golang爬蟲(二) goquery庫的使用

goquery為go語言帶來了類似於jquery的語法和一組特性。它基於go的net html包和css selector庫cascadia。由於net html解析器返回節點,而不是功能齊全的dom樹,因此jquery的有狀態操作函式 如height css detach 已經停止。此外,因為ne...

Go爬蟲(讀寫)

ioutil.readall 讀取所有資料 如果讀取成功,則 err 返回 nil,而不是 eof func readall r io.reader byte,error ioutil.readfile 讀取檔案中的所有資料 如果讀取成功,則 err 返回 nil,而不是 eof func read...