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

如何使用Golang解析页面链接并提取链接内所需数据

解决方案

你现在的代码只是把整个.dbaListing元素的文本存进了切片,没有精准提取链接、标题、价格这些目标字段。下面是修改后的完整代码,直接实现你要的功能:

package main

import (
    "fmt"
    "strings"

    "github.com/gocolly/colly"
)

// 字段首字母大写符合Go导出规则,方便后续扩展(比如序列化输出)
type Pars struct {
    Link  string
    Title string
    Price string
}

func main() {
    scrapURL := "https://www.dba.dk/mobil-og-telefoni/mobiltelefoner-og-tilbehoer/iphone/model-12/"
    c := colly.NewCollector(
        colly.AllowedDomains("www.dba.dk"),
    )

    // 存储所有提取到的商品数据
    var items []Pars

    // 遍历每个商品列表项
    c.OnHTML(".dbaListing", func(h *colly.HTMLElement) {
        item := Pars{}
        // 提取商品链接:取列表项内h3下a标签的href属性
        item.Link = h.ChildAttr("h3 a", "href")
        // 补全相对链接为完整域名地址
        if !strings.HasPrefix(item.Link, "http") {
            item.Link = "https://www.dba.dk" + item.Link
        }
        // 提取商品标题:取a标签的文本并去除空白
        item.Title = strings.TrimSpace(h.ChildText("h3 a"))
        // 提取商品价格:取.price元素的文本并去除空白
        item.Price = strings.TrimSpace(h.ChildText(".price"))

        items = append(items, item)
    })

    // 发起页面访问,处理可能的错误
    err := c.Visit(scrapURL)
    if err != nil {
        fmt.Println("访问页面失败:", err)
        return
    }

    // 打印所有提取结果
    for i, item := range items {
        fmt.Printf("第%d个商品:\n", i+1)
        fmt.Printf("链接:%s\n", item.Link)
        fmt.Printf("标题:%s\n", item.Title)
        fmt.Printf("价格:%s\n\n", item.Price)
    }
}

关键说明:

  1. 精准元素定位:
    • 用ChildAttr获取子元素的属性值(比如a标签的href)
    • 用ChildText获取子元素的文本内容(标题、价格)
    • 用strings.TrimSpace清理文本前后的空白,让数据更整洁
  2. 链接补全:页面返回的href可能是相对路径,手动拼接域名后才能直接访问
  3. 批量数据收集:把每个商品的信息存入切片,而非仅提取第一个元素

如果需要从商品详情页提取更多数据(比如商品描述、成色),可以添加详情页回调:

// 访问商品详情页时触发的处理逻辑
c.OnHTML(".adPage", func(h *colly.HTMLElement) {
    desc := strings.TrimSpace(h.ChildText(".description"))
    fmt.Printf("商品描述:%s\n", desc)
})

然后在列表项的回调里,调用h.Request.Visit(item.Link)即可自动触发详情页的爬取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 01:28:31