用了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...