goweb-scrapinggo-colly

Getting attribute value with Go Colly


When working with c.OnHTML in "html", how can I get the value of the href attribute inside the #id-card-1 ID?

   c.OnHTML("html", func(e *colly.HTMLElement) {
...
    linkStr := "#id-card-1[href]" //???
    log.Print(e.Attr(linkStr))
...}

This is the piece of HTML in the page:

<a href="/some-link-here" target="_blank" id="id-card-1" class="card card--featured" data-item-card="11042036">

Solution

  • The ChildAttr function can use for this purpose.

    ChildAttr returns the stripped text content of the first matching element's attribute.

    https://pkg.go.dev/github.com/gocolly/colly#HTMLElement.ChildAttr

    c.OnHTML("html", func(e *colly.HTMLElement) {
        linkStr := "#id-card-1"
        log.Println(e.ChildAttr(linkStr, "href"))
    })