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

如何使用go-colly爬取食谱站点无序列表中的食材信息?

问题原因分析
  • 元素获取失败的核心原因就是「检查元素」和「页面源代码」的结构差异:
    • 页面源代码是服务器直接返回的原始静态HTML,colly默认请求拿到的就是这份内容,你也可以看到这份内容里.ingredients对应的ul下面只有空的ellipsis类div,没有任何li、strong元素,所以你代码里遍历li的逻辑完全不会执行,自然拿不到食材内容。
    • 「检查-元素」面板里的内容是浏览器加载完页面后,执行了页面自带的JavaScript代码,动态渲染、填充DOM之后的最终结构,colly默认不支持执行JS,所以拿不到这部分动态生成的内容。
解决思路

你可以根据实际情况选择以下任意一种方案:

  1. 抓取后端接口(优先推荐)
    打开浏览器F12开发者工具,切换到「网络」面板,刷新页面后筛选Fetch/XHR请求,找到返回食材数据的后端接口,直接请求该接口获取结构化的JSON数据,不需要解析DOM,效率最高也最稳定。
  2. 从静态页面内嵌JS中提取数据
    部分网站会把全量页面数据存在静态HTML的内嵌<script>标签中,通常存放在window.__INITIAL_STATE__之类的全局变量里,你可以用colly提取对应script标签的文本内容,再通过正则匹配、JSON解析的方式把食材数据提取出来,比调用浏览器轻量很多。
  3. 使用支持JS渲染的爬虫工具
    如果前两种方案都走不通,可以更换支持JS渲染的工具,Go生态可以用chromedp,或者搭配Selenium、Playwright这类无头浏览器工具,等待页面JS执行完成、DOM渲染完毕后再提取元素,就能拿到和「检查元素」面板一致的完整结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:57:02