php小編西瓜為您介紹Colly這個強大的網絡爬蟲框架。Colly是一個使用Go語言編寫的簡單而靈活的爬蟲框架,它提供了豐富的功能,包括獲取HTML元素、提取數據以及處理請求和響應等。在使用Colly時,有時我們需要獲取HTML元素的子屬性的值,比如獲取一個鏈接的href屬性。那么,如何在Colly中獲取子屬性的值呢?接下來,我們將一一為您解答。
問題內容
這是我一直在 上工作的示例頁面https://www.lazada.vn/-i1701980654-s7563711492.html
這是我想要獲取的元素(產品標題)
...
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
...
登錄后復制
我想獲取
元素之間的文本值,即 yierku 【免費送貨 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)
})
登錄后復制
它給出了 pdp-mod-product-badge-title 的響應
當我嘗試將其更改為
child := e.childattrs("div[4]/div/div[3]/div[2]/div/div[1]/div[3]/div/div/h1", "文本" )
它沒有給我任何結果
解決方法
使用 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
}
登錄后復制






