You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Go语言中将提取的链接存入links变量?入门求助

解决Go语言中提取链接赋值给变量的问题

你当前的代码已经能定位到目标链接并打印,但要把链接存入links变量,只需在闭包中直接操作变量即可,以下分两种场景给出修改方案:

场景1:只提取第一个匹配的链接(用string类型存储)

修改后的代码如下:

package main

import (
    "fmt"
    "github.com/PuerkitoBio/goquery"
    "log"
)

func main() {
    var links string = ""

    doc, err := goquery.NewDocument("https://dev.bolshoi.ru/visit/buyingnew/")
    if err != nil {
        log.Fatal(err)
    }

    // 遍历匹配的a标签,获取第一个有效链接后停止
    doc.Find("a:contains(\"График предварительной продажи билетов на декабрь 2023\")").Each(func(i int, s *goquery.Selection) {
        link, exists := s.Attr("href")
        if exists { // 先判断href属性是否存在,避免空值
            links = link
            fmt.Printf("提取到的链接:%s\n", link)
            return false // 返回false终止遍历,只取第一个结果
        }
    })

    // 查看最终存入变量的内容
    fmt.Println("links变量的值:", links)
}

场景2:提取所有匹配的链接(用切片存储更合理)

如果页面中有多个符合条件的链接,建议用字符串切片存储,这样能保留所有结果:

package main

import (
    "fmt"
    "github.com/PuerkitoBio/goquery"
    "log"
)

func main() {
    var links []string // 定义字符串切片存储多个链接

    doc, err := goquery.NewDocument("https://dev.bolshoi.ru/visit/buyingnew/")
    if err != nil {
        log.Fatal(err)
    }

    doc.Find("a:contains(\"График предварительной продажи билетов на декабрь 2023\")").Each(func(i int, s *goquery.Selection) {
        link, exists := s.Attr("href")
        if exists {
            links = append(links, link) // 将每个有效链接追加到切片中
            fmt.Printf("第%d个链接:%s\n", i+1, link)
        }
    })

    // 查看切片中的所有链接
    fmt.Println("links切片的内容:", links)
    // 如果需要拼接成单个字符串,可引入strings包使用Join方法
    // import "strings"
    // combinedLinks := strings.Join(links, "; ")
    // fmt.Println("拼接后的字符串:", combinedLinks)
}

关键说明

  • Go的闭包可以直接访问并修改外部作用域的变量,所以在Each的回调函数里直接赋值或追加即可。
  • 增加exists判断是为了避免目标标签没有href属性时,存入空字符串影响结果。
  • 若只需要第一个匹配结果,返回false可以终止Each的遍历,提升效率。

内容的提问来源于stack exchange,提问作者tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:30:20