Maison >développement back-end >Golang >Colly - Comment obtenir la valeur d'un bien enfant ?

Colly - Comment obtenir la valeur d'un bien enfant ?

WBOY
WBOYavant
2024-02-11 09:36:08696parcourir

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

l'éditeur php Xigua vous présente Colly, un puissant framework de robot d'exploration Web. Colly est un framework d'exploration simple et flexible écrit en langage Go. Il fournit des fonctions riches, notamment l'obtention d'éléments HTML, l'extraction de données et le traitement des demandes et des réponses. Lors de l'utilisation de Colly, nous avons parfois besoin d'obtenir la valeur d'un sous-attribut d'un élément HTML, comme l'obtention de l'attribut href d'un lien. Alors, comment obtenir la valeur d’une sous-propriété à Colly ? Ensuite, nous répondrons à vos questions une par une.

Contenu des questions

C'est ce que j'ai fait 上工作的示例页面https://www.lazada.vn/-i1701980654-s7563711492.html

C'est l'élément que je souhaite obtenir (titre du produit)

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

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

Voici ce que j'ai essayé jusqu'à présent

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

Il donne une réponse de pdp-mod-product-badge-title

Quand j'essaie de le changer en

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

Cela ne m'a donné aucun résultat

Solution de contournement

Utilisez plutôt 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
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer