Rumah >pembangunan bahagian belakang >Golang >Colly - Bagaimana untuk mendapatkan nilai harta kanak-kanak?

Colly - Bagaimana untuk mendapatkan nilai harta kanak-kanak?

WBOY
WBOYke hadapan
2024-02-11 09:36:08694semak imbas

Colly - 如何获取子属性的值?

editor php Xigua memperkenalkan anda kepada Colly, rangka kerja perangkak web yang berkuasa. Colly ialah rangka kerja perangkak yang ringkas dan fleksibel yang ditulis dalam bahasa Go. Ia menyediakan fungsi yang kaya, termasuk mendapatkan elemen HTML, mengekstrak data dan memproses permintaan dan respons. Apabila menggunakan Colly, kadangkala kita perlu mendapatkan nilai sub-atribut elemen HTML, seperti mendapatkan atribut href bagi pautan. Jadi, bagaimana untuk mendapatkan nilai sub-harta dalam Colly? Seterusnya, kami akan menjawab soalan anda satu persatu.

Kandungan soalan

Ini yang saya lakukan selama ini 上工作的示例页面https://www.lazada.vn/-i1701980654-s7563711492.html

Ini elemen yang saya nak dapat (tajuk produk)

...
<div>
   <img src="https://lzd-img-global.slatic.net/g/tps/imgextra/i1/o1cn01juoyif22n3uu7jx4r_!!6000000007107-2-tps-162-48.png" class="pdp-mod-product-badge" alt="lazmall">
    <h1 class="pdp-mod-product-badge-title">
     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
    </h1>
</div>
...

Saya nak dapatkan 4a249f0d628e2318394fd9b75b4636b1 元素之间的文本值,即 yierku 【免费送货 miễn phí vận chuyển】giày n....

Ini yang saya cuba setakat ini

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)
    })

Ia memberi respons sebanyak pdp-mod-product-badge-title

Apabila saya cuba menukarnya kepada

child := e.childattrs("div[4]/div/div[3]/div[2]/div/div[1]/div[3]/div/div/h1", "文本" )

Ia tidak memberi saya sebarang hasil

Penyelesaian

Gunakan func (*xmlelement) childtextsebaliknya.

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
}

Atas ialah kandungan terperinci Colly - Bagaimana untuk mendapatkan nilai harta kanak-kanak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam