Maison > développement back-end > Golang > le corps du texte

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

WBOY
Libérer: 2024-02-11 09:36:08
avant
668 Les gens l'ont consulté

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>
...
Copier après la connexion

Je veux obtenir <h1> 元素之间的文本值,即 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)
    })
Copier après la connexion

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
}
Copier après la connexion

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!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal