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

Go-Colly爬虫仅返回第一页数据,求助排查异步问题

Colly爬虫仅返回第一页结果的解决方法

你的问题核心是Colly的异步执行机制:调用c.Visit(searchUrl)后,程序会立刻继续执行return products,但此时后续页面的爬取任务还在后台异步运行,products只收集了第一页的数据就被返回了。

解决步骤:

1. 等待所有异步请求完成

在c.Visit(searchUrl)之后调用c.Wait(),让Collector阻塞直到所有请求(包括下一页的请求)全部完成:

c.Visit(searchUrl)
    // 等待所有爬取任务结束
    c.Wait()
    return products

2. 修复结构体字段的访问权限

你的Product结构体字段都是小写,属于包内私有字段,main包无法访问这些字段,打印时会显示空结构。需要将字段名改为首字母大写(导出字段):

修改product.go:

package scraper

type Product struct {
    Name      string
    FullPrice string
    Link      string
}

同时对应修改scraper.go中创建Product的代码:

product := Product{
    Name:      h.ChildText(s.name),
    FullPrice: priceReplacer.Replace(fullPrice),
    Link:      fmt.Sprintf("%s%s", baseUrl, h.ChildAttr(s.link, "href")),
}

验证修改效果

完成上述修改后,程序会等待所有页面爬取完成再返回结果,同时main包能正确读取并打印所有商品数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:56:03