Morrisons 没有公开的商品 API。所以,大多数想抓取 Morrisons 商品数据的团队,最后要么花 £2000+ 找 freelancer 定制开发,要么接一个 Apify scraper,结果几天后就失效。

但很多人不知道,还有第三种方式:AI scraping。它像人一样阅读页面,因此同一套配置可以用于 Morrisons 分类页、品牌列表页或促销页,也更能扛住那些会让传统 scraper 崩掉的页面改版。

这篇教程会完整讲清楚:为什么定制 Morrisons 商品 scraper 不划算,哪些 Morrisons 页面能拿到最干净的数据,以及如何用 Datablist's AI Scraping Agent 一步步完成抓取。

📌 赶时间先看这里

本文会演示如何使用 Datablist's AI Scraping Agent 抓取 Morrisons 商品数据。

问题: Morrisons 没有公开商品 API;现成 scraper 经常在页面更新后几周内失效;定制开发通常要 £2000+,还要持续维护。

解决方案: 用 Datablist's AI Scraping Agent,通过英文 prompt 和一个 URL 抓取 Morrisons 商品。

你会学到:

  1. 为什么定制 Morrisons scraper 是一个成本黑洞
  2. 哪些 Morrisons 页面返回的数据最干净
  3. 如何在 10 分钟内用 5 个步骤抓取任意 Morrisons 分类

为什么用 Datablist:

  1. AI scraping 读取的是语义,不是 HTML,所以 Morrisons 改版不会轻易中断抓取
  2. 自动处理分页(单次运行最多 5,000 页)
  3. 无需代码、无需 API keys,只需要一个 Morrisons URL 和一个 prompt

本文内容

定制 Morrisons Scraper 是成本黑洞

如果你曾经考虑过自己开发 Morrisons scraper,先看看下面三个原因,再决定要不要花这笔钱。

成本很高

一个稳定的 Morrisons scraper 不是周末项目。Morrisons.com 的商品网格通过 JavaScript 动态加载,分类页可能有几百页分页,而且页面结构更新频率不低。任何基于固定规则的 scraper 都需要不断修修补补。

大多数团队会尝试下面几种方式,但每条路都有明显问题:

  • 雇一个 freelance developer:首版开发 £2000+,之后 Morrisons 每次更新商品网格都要继续付维护费
  • 从 Apify 或 GitHub 买现成 Morrisons product scraper:第一天能跑,下一次页面结构变化后几周内就可能失效
  • Vibe-code 一个 Puppeteer 或 Playwright script:Morrisons 的分页、JavaScript rendering、商品卡片格式不一致,很快就会把脚本搞崩

如果你只需要一次性快照,找 freelancer 也许够用。但如果你需要定期获取最新 Morrisons 数据,比如价格监控、FMCG 分析、retail arbitrage,维护成本会按月叠加

How To Scrape Morrisons Products - Cost of Custom Scrapers
How To Scrape Morrisons Products - Cost of Custom Scrapers

开发周期很长

即使开发者很强,要做一个干净稳定的 Morrisons scraper 也需要几周时间。他们要映射每个分类页,处理渲染后的 HTML,编写分页网格逻辑,还要覆盖 Morrisons 返回 “N/A” 作为促销价,或把部分商品放在年龄验证后面的情况。

Datablist's AI Scraping Agent 直接跳过这整个开发阶段。你只需要粘贴一个 Morrisons URL,就能在 10 分钟内拿到结构化商品数据。 不需要 spec 文档,不需要反复沟通边界情况,也不用等 v2。

How To Scrape Morrisons Products - Time to Build a Scraper
How To Scrape Morrisons Products - Time to Build a Scraper

经常失效

这才是真正的成本。Morrisons 会经常更新商品网格。每当团队上线新的分类模板,或移动价格元素的位置,你的定制 Morrisons scraper 就可能停止工作。

这时你只有两个选择:再付钱给开发者,或者自己花一下午 debug。

AI scraping 可以绕开这个问题。因为 AI Agent 读取的是页面语义,而不是 HTML 结构,即使 Morrisons 改了价格元素外层的 CSS class,价格仍然是价格。

💡 核心区别

传统 scraper 按规则执行:“找到 class 为 .product-price 的元素并提取文本。” AI scraper 按语义执行:“找到这个 Morrisons 页面上的商品价格。”

所以,同一套配置今天能抓 Morrisons,下个月 Morrisons 重组商品网格后依然能用,并且可以顺畅迁移到 Sainsbury's、Asda、Tesco,而不用为每个网站单独写代码。

如何用 Datablist AI Agent 抓取 Morrisons 商品

在进入步骤之前,先简单说明 AI Scraping Agent 是什么,哪些 Morrisons 页面结果更干净,你能抓取哪些字段,以及它的限制在哪里。

什么是 Datablist's AI Scraping Agent?

Datablist is a workflow automation platform,用于构建 Lead lists、丰富数据,以及运行 scraping workflows。Datablist 内置 60 多种 sources 和 enrichments,其中 AI Scraping Agent 就是用来从零售网站提取商品数据的工具。

这个 agent 结合了三件事: 目标 URL、描述要提取内容的 prompt,以及一个能像人一样阅读页面的 language model。

抓取 Morrisons 时,你甚至不用自己写 prompt。Datablist 提供 Retail Product Scraper template,已经预置好 prompt 和输出列。你粘贴 Morrisons URL,template 会处理剩下的工作。

它在处理 Morrisons 时有三个关键点:

  • 默认使用 OpenAI GPT 4.1 mini,这是 AI scraping 中性价比很高的 LLM
  • 支持 Render HTML,这对 Morrisons 是必需的,因为商品网格通过 JavaScript 加载
  • 支持自动分页,单次运行最多可跨 5,000 页

这也是为什么同一套配置可以直接用于其他英国超市。同一个 agent、同一个 template、同一套 settings,可以用于 Sainsbury's、Asda 和 Tesco。唯一要换的是 URL。

最重要规则:只抓品牌页和分类页

始终抓取 Morrisons 分类页或品牌页, 不要抓首页,也不要抓 “all products” 页面。超大列表会撑爆 AI Agent 的 context window,运行会中途停止且无法恢复,credits 也会被浪费。

AI Agent 能稳定处理的 Morrisons 页面:

  • ✅ morrisons.com//... 上的分类页
  • ✅ 品牌页(特定制造商商品列表)
  • ✅ Deals 或 offers 页面

应避免:

  • ❌ Morrisons 首页
  • ❌ “All products” 或全站搜索结果
  • ❌ 任何把上千个商品加载到一个 infinite scroll 中的页面

可以从 Morrisons 抓取哪些数据

一次 Morrisons 抓取可以提取价格监控、竞品研究,或向现有商品目录做 data enrichment 所需的所有商品字段:

  • Product Name:Morrisons 网站上显示的完整商品标题
  • Product URL:指向 morrisons.com 商品页的直接链接
  • Brand Name:商品背后的制造商或品牌
  • Price:当前英镑价格,包含 £ 符号
  • Sale Price:如有 Morrisons 促销则返回折扣价;没有促销则返回 “N/A”
  • Product Category:商品所在货架、品类或部门
  • Availability:有货、缺货或库存有限
  • Rating:Morrisons 显示的客户评分
  • Image URL:主商品图片的直接链接
  • SKU:Morrisons 内部商品 ID

运行前只选择你真正需要的输出字段,这样导出的文件只会包含你会使用的列。

抓取 Morrisons 商品完整步骤

完整的 Morrisons 抓取配置需要 5 个步骤。开始前,请准备好:

  1. 一个 Morrisons 分类页或品牌页 URL(不要用首页)
  2. 大致明确你需要哪些商品字段

步骤 1:注册并创建 Collection

首先,注册 Datablist.com

How To Scrape Morrisons Products - Datablist Homepage
How To Scrape Morrisons Products - Datablist Homepage

然后,创建一个 New Collection

How To Scrape Morrisons Products - New Collection
How To Scrape Morrisons Products - New Collection

步骤 2:进入 AI Scraping Agent

  1. 点击 See all sources
How To Scrape Morrisons Products - See All Sources
How To Scrape Morrisons Products - See All Sources
  1. 向下滚动,选择 AI Scraping Agent (Site Scraper)
How To Scrape Morrisons Products - AI Agent Selection
How To Scrape Morrisons Products - AI Agent Selection

现在你会看到 source configuration interface,大致如下:

How To Scrape Morrisons Products - Source Settings
How To Scrape Morrisons Products - Source Settings

步骤 3:选择 Retail Product Scraper Template 并粘贴 Morrisons URL

  1. 点击 Template Drop-Down,选择 “Retail Product Scraper”
How To Scrape Morrisons Products - Template Selection
How To Scrape Morrisons Products - Template Selection
  1. 将你的 Morrisons 分类页 URL 粘贴到 URL 字段,例如:

https://groceries.morrisons.com/browse/fresh-176716

How To Scrape Morrisons Products - URL Configuration
How To Scrape Morrisons Products - URL Configuration

❗️ 只使用品牌页和分类页(提醒)

不要粘贴 Morrisons 首页或 “all products” URL。大列表会超出 AI Agent 的 context window。请一次抓取一个 Morrisons 分类。

  1. 设置要抓取的页数(Morrisons 通常每页展示约 36 个商品,所以一个 200 个商品的分类大约需要 3 到 4 页)
How To Scrape Morrisons Products - Pagination Settings
How To Scrape Morrisons Products - Pagination Settings
  1. 向下滚动,点击 Continue
How To Scrape Morrisons Products - Advanced Settings
How To Scrape Morrisons Products - Advanced Settings

💡 点击 Continue 前检查 Advanced Settings

确保以下选项已启用:

  1. LLM:OpenAI GPT 4.1 mini(performance-to-price ratio 最佳)
  2. Max Iterations:10
  3. Website Scraper Option: Render HTML(对 Morrisons 很关键,因为网站通过 JavaScript 动态加载商品网格)

步骤 4:配置输出字段

Datablist 会自动创建 output properties。

点击 X Icons 删除不需要的输出字段(例如,如果你只做 Morrisons price scraping,可以移除 Rating)。

How To Scrape Morrisons Products - Outputs Configuration
How To Scrape Morrisons Products - Outputs Configuration

步骤 5:运行抓取

输出字段设置完成后,点击 Run Import Now 开始抓取 Morrisons。

How To Scrape Morrisons Products - Run Import
How To Scrape Morrisons Products - Run Import

几分钟后,你的 Morrisons 结果会像下面这样。之后,你可以用 Datablist 的 workflow automation features 清洗、去重并导出数据。

How To Scrape Morrisons Products - Results Overview
How To Scrape Morrisons Products - Results Overview

💡 重复抓取 Morrisons 时避免重复数据

如果你计划之后再次抓取同一个 Morrisons 分类:

  1. 选择一个唯一标识列(Product URL 最合适)
  2. 点击列标题 → Rename - Settings - Delete
  3. 勾选:Do not allow duplicate values
  4. 点击 Save Property

如果你还会把 Sainsbury's、Asda 和 Tesco 的数据拉到同一个文件中,我们关于 removing duplicates from CSV files 的教程会讲跨 retailer 去重。

Datablist 的 AI Agent 也能抓取其他零售网站

Morrisons 的配置并不只适用于 Morrisons。我们测试过的英国超市中,同一个 AI Scraping Agent 和同一个 Retail Product Scraper template 都能使用。唯一变化是 URL。

如果你还需要抓取类似 retailer 的商品数据,可以参考下面的分步教程:

  1. Scrape products from Sainsbury's 👈🏽
  2. Scrape products from Asda 👈🏽
  3. Scrape products from Tesco 👈🏽

关键结论

  1. 定制 Morrisons product scraper 是成本黑洞。 开发成本通常 £2000+,后续维护另算,而且 Morrisons 页面改版会定期让它失效。
  2. AI scraping 读取语义,而不是 HTML。 所以即使商品网格变化,同一套配置也能继续抓取 Morrisons 商品,并且不需要为 Sainsbury's、Asda 和 Tesco 单独写代码。
  3. 始终抓品牌页或分类页,不要抓首页。 大列表会超出 agent 的 context window,浪费一次运行。
  4. 完整配置不到 5 分钟。 Template、URL、outputs、run。

关于抓取 Morrisons 的常见问题

抓取 Morrisons 商品需要多少钱?

Datablist's AI Agent 基于 usage-based credit system 运行。每次 Morrisons 抓取的成本取决于 agent 处理的商品数和页数。Datablist plans start at $25/month,包含 5,000 free credits;top-up packs 从 $20 购买 20,000 credits 起,大额套餐最高可享 35% bulk discount。

抓取完整 Morrisons 商品目录要多久?

大多数包含 50 到 200 个商品的 Morrisons 分类页可以在 5 到 10 分钟内抓完。跨多个分页分类的大型运行(500+ 商品)可能需要 10 到 20 分钟。首次配置通常额外需要 2 到 3 分钟。

为什么应该抓 Morrisons 分类页,而不是 All Products?

Morrisons 的 “all products” 视图会把上千个商品加载到一个渲染页面中。这会超出 AI Agent 的 context window,agent 会中途停止,而且没有 resume option,部分运行结果也就浪费了。分类页和品牌页保持在安全范围内,抓取更干净,之后如果需要完整覆盖,也可以再合并到一个 collection。

可以抓取 Morrisons 促销价和优惠吗?

可以。Retail Product Scraper template 包含 Sale Price 输出字段。当 Morrisons 有促销时,会返回折扣价。没有优惠时,该列返回 “N/A”,这反而很适合按促销状态筛选不同分类的商品。

在英国抓取 Morrisons 数据合法吗?

抓取公开可见的 Morrisons 商品数据(名称、价格、库存状态)在英国通常适用公开网页数据的一般原则。不过,你仍应查看 Morrisons 的服务条款,避免抓取个人数据,并控制在合理请求量内。商业使用前,建议让你的 legal team 审核。

Morrisons 会屏蔽 Scraper 吗?

作为公开零售网站,Morrisons 的 anti-bot protections 通常不算激进。通过 Datablist 运行的大多数 Morrisons 抓取都能首次成功,尤其是在启用 Render HTML 后。如果某个分类页没有返回数据,可以降低页数后重试,或把抓取拆到更具体的子分类。

可以定时抓取 Morrisons 做价格监控吗?

可以。Datablist 的 workflow automation features 支持设置 recurring runs。建议搭配唯一标识列(Product URL 最合适)和防重复设置,这样每次重复抓取 Morrisons 时只会添加新商品,而不会复制已有记录。

不会写代码也能抓取 Morrisons 吗?

不需要代码。整个流程都是 no-code:选择 Retail Product Scraper template,粘贴 Morrisons URL,选择 outputs,然后点击 run。只要你能写一句话,就能用 Datablist 抓取 Morrisons。

哪些 Morrisons 分类最适合抓取?

morrisons.com 上的标准 grocery categories 返回的数据最干净:fresh、frozen、bakery、drinks、household。品牌页也表现不错。Promo 或 “Last chance” 页面可能稍微更杂,因为商品卡片格式会混在一起,但 AI Agent 仍然能从中提取可用数据。

AI Agent 能自动处理 Morrisons 分页吗?

可以。开启 Enable Pagination 后,AI Agent 会按照你设置的上限遍历 Morrisons 分类中的每一页(默认 10,最高 5,000)。如果某个 Morrisons 分类有 240 个商品,每页显示 36 个,把 pagination 设为 10,agent 就能抓完整个列表。

什么是 AI Scraping?

AI scraping 是一种用 language model,而不是固定 HTML 规则,从网站提取结构化数据的方法。Agent 会访问页面,阅读内容,并按你用英文描述的字段返回结果。这正是它在 Morrisons 这类经常更新页面结构的网站上更稳定的原因。

AI Scraping 和传统 Web Scraping 有什么区别?

传统 scraper 遵循固定规则(CSS selectors、XPath)。网站一改,规则就会失效。AI scraping 读取页面语义,所以即使 markup 变化,Morrisons 价格仍然是 Morrisons 价格。这也是为什么同一套 Datablist 配置可以跨 Sainsbury's、Asda 和 Tesco 使用,而不需要为每个网站单独写代码。