php小編西瓜為您介紹Colly這個(gè)強(qiáng)大的網(wǎng)絡(luò)爬蟲框架。Colly是一個(gè)使用Go語言編寫的簡單而靈活的爬蟲框架,它提供了豐富的功能,包括獲取HTML元素、提取數(shù)據(jù)以及處理請(qǐng)求和響應(yīng)等。在使用Colly時(shí),有時(shí)我們需要獲取HTML元素的子屬性的值,比如獲取一個(gè)鏈接的href屬性。那么,如何在Colly中獲取子屬性的值呢?接下來,我們將一一為您解答。
問題內(nèi)容
這是我一直在 上工作的示例頁面https://www.lazada.vn/-i1701980654-s7563711492.html
這是我想要獲取的元素(產(chǎn)品標(biāo)題)
...yierku 【free shipping mi?n phí v?n chuy?n】giày nam mùa thu và mùa ??ng giày th??ng xu h??ng nam th? thao t?t c? các tr?n ??u giày da t?ng chi?u cao giày nam
...
登錄后復(fù)制
我想獲取
元素之間的文本值,即 yierku 【免費(fèi)送貨 mi?n phí v?n chuy?n】giày n....
這是我迄今為止嘗試過的
c := colly.NewCollector() c.OnError(func(_ *colly.Response, err error) { log.Println("Something went wrong:", err) }) c.OnXML("/html/body", func(e *colly.XMLElement) { child := e.ChildAttrs("div[4]/div/div[3]/div[2]/div/div[1]/div[3]/div/div/h1", "class") fmt.Println(child) //fmt.Println(child) })
登錄后復(fù)制
它給出了 pdp-mod-product-badge-title
的響應(yīng)
當(dāng)我嘗試將其更改為
child := e.childattrs("div[4]/div/div[3]/div[2]/div/div[1]/div[3]/div/div/h1", "文本" )
它沒有給我任何結(jié)果
解決方法
使用 func (*xmlelement) childtext相反。
package main import ( "fmt" "github.com/gocolly/colly/v2" ) func main() { c := colly.NewCollector() c.OnError(func(_ *colly.Response, err error) { fmt.Println("Something went wrong:", err) }) c.OnXML("/html/body", func(e *colly.XMLElement) { child := e.ChildText("div[4]/div/div[3]/div[2]/div/div[1]/div[3]/div/div/h1") fmt.Println(child) }) c.Visit("https://www.lazada.vn/-i1701980654-s7563711492.html") // Output: // Yierku 【Free Shipping Mi?n phí v?n chuy?n】Giày nam mùa thu và mùa ??ng giày th??ng xu h??ng nam th? thao t?t c? các tr?n ??u giày da t?ng chi?u cao giày nam }
登錄后復(fù)制