如果您正在寻找产品、体验和优惠券的超值优惠,Groupon 是一个顶级平台。Groupon 拥有数百万活跃用户和数千个每日优惠,可帮助人们在享受餐饮、旅行和购物等活动的同时节省资金。通过抓取 Groupon,您可以访问这些优惠的宝贵数据,帮助您随时了解最新优惠,甚至可以构建自己的优惠跟踪应用程序。

在本博客中,我们将探讨如何用 Python 构建一个功能强大的 Groupon 抓取工具来查找最热门的交易和优惠券。鉴于 Groupon 使用 JavaScript 动态呈现其内容,简单的抓取方法无法有效发挥作用。为了解决这个问题,我们将利用 爬虫库 Crawling API,无缝处理 JavaScript 渲染和其他挑战。

让我们深入了解如何逐步学习如何从 Groupon 抓取交易和优惠券。

目录

  1. 为什么要抓取 Groupon 的交易和优惠券?
  2. 从 Groupon 中提取的关键数据点
  3. 爬虫库 Crawling API Groupon 抓取
  • 为什么要使用 Crawlbase Crawling API?
  • Crawlbase Python 库
  1. 设置 Python 环境
  • 安装Python
  • 设置虚拟环境
  • 安装所需的库
  • 选择正确的 IDE
  1. 抓取 Groupon 优惠信息
  • 了解 Groupon 的网站结构
  • 编写 Groupon 抓取工具
  • 处理分页
  • 将数据存储在 JSON 文件中
  • 完整代码示例
  1. 抓取 Groupon 优惠券
  • 检查 HTML 结构
  • 编写 Groupon 优惠券抓取程序
  • 将数据存储在 JSON 文件中
  • 完整代码示例
  1. 总结
  2. 常见问题

为什么要抓取 Groupon 的交易和优惠券?

抓取 Groupon 优惠和优惠券可帮助您跟踪最新的折扣和优惠。Groupon 每天都会发布许多优惠,因此很难手动检查所有优惠。一个好的 Groupon 抓取工具可以为您完成这项工作,收集和研究食品、旅游、电子产品等领域的优惠。

通过 Groupon Scraping,您可以提取重要信息,例如交易内容、价格、折扣幅度以及结束时间。这对于想要了解竞争对手优惠的企业、创建列出优惠的网站的开发人员或任何只想找到最划算商品的人都有好处。

我们的目标是高效地抓取 Groupon 交易和优惠券,提取所有必要信息,同时解决内容自行加载等问题。由于 Groupon 依赖 JavaScript 来显示其内容,因此常规抓取方法需要帮助获取数据。这就是我们的解决方案,由 Crawlbase 提供支持 Crawling API,就派上用场了。它让我们能够绕过这些常见的障碍,轻松获得交易。

在接下来的部分中,我们将研究从 Groupon 中提取的关键信息,并为顺利的数据收集过程做好准备。

从 Groupon 中提取的关键数据点

使用 Groupon 抓取工具时,您需要确定关键数据,以便抓取工作有价值。Groupon 拥有大量不同类别的交易,提取正确的信息可以帮助您从抓取项目中获取最大收益。以下是抓取 Groupon 时应关注的事项:

从 Groupon 中提取的关键数据点
  1. 交易标题:交易的名称或标题首先引起人们的注意。它让人们快速了解交易的内容。
  2. 交易描述:深入的描述提供了有关产品或服务的更多细节,帮助人们了解优惠包含的内容。
  3. 原价和折扣价:这些对于了解可用的节省起着至关重要的作用。通过获取原价和折扣价,您可以计算出节省的百分比。
  4. 折扣率:许多 Groupon 交易都会立即显示折扣百分比。获取此数据点可节省您亲自计算节省金额的时间。
  5. 交易到期日:了解优惠何时结束有助于过滤掉旧优惠。了解截止日期可确保您查看有效优惠。
  6. 交易地点:某些优惠适用于特定地区。获取位置信息可让您按地区对优惠进行分类,这对本地营销工作大有帮助。
  7. 交易类别:Groupon 将优惠分为食品、旅游、电子产品等类别。获取类别详细信息可轻松细分优惠以供研究或展示。
  8. 评分和评论:顾客的评价以及他们对交易的评分表明了优惠的受欢迎程度和可信度。这些信息有助于判断交易的质量。

通过集中精力于这些关键数据,您可以确保您的 Groupon Scraping 为您提供有用的重要信息。下一部分将向您展示如何设置工具并构建一个可以以良好的方式从 Groupon 提取交易的抓取工具。

爬虫库 Crawling API Groupon 抓取

当你需要处理变化的内容和加载内容的 JavaScript 时,处理 Groupon Scraper 项目可能会很困难。Groupon 的网站使用大量 JavaScript 来显示交易和优惠,因此你需要的不仅仅是发出简单的请求来获取所需的数据。这就是 爬虫库 Crawling API 派上用场。Crawlbase Crawling API 帮助您避免这些问题并从 Groupon 提取数据,而不会遇到 JavaScript 加载、CAPTCHA 或 IP 阻止问题。

为什么要使用 Crawlbase Crawling API?

  1. 处理 JavaScript 渲染:从 Groupon 抢购商品时最大的障碍是处理 JavaScript 创建的内容。Crawlbase 的 API 负责处理 JavaScript,允许您提取数据。
  2. 避免 IP 阻止和 CAPTCHA:如果您抓取过多数据,Groupon 可能会阻止您的 IP 或抛出 CAPTCHA。Crawlbase 会自行更改 IP 并击败 CAPTCHA,因此您可以不间断地提取 Groupon 数据。
  3. 易于集成:您可以添加 Crawlbase Crawling API 轻松添加到 Python 代码中。这样您就可以专注于获取所需的数据,而 API 会在后台处理棘手的事情。
  4. 可扩展抓取:Crawlbase 提供灵活的选择来处理任何规模的 Groupon 抓取项目。您可以使用它来收集小型数据集或进行大规模数据收集工作。

Crawlbase Python 库

Crawlbase 提供自己的 Python 库 帮助其客户。您需要一个访问令牌来验证您的身份。您可以在以下情况下获取此令牌: 注册.

下面是一个示例函数,演示如何使用 Crawling API 从 Crawlbase 库发送请求。

1
2
3
4
5
6
7
8
9
10
11
12
13
 爬行基地 进口 抓取API

爬行 API = 爬行 API({ '令牌': 'YOUR_CRAWLBASE_TOKEN' })

DEF make_crawlbase_request(网址):
响应=crawling_api.get(url)

if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')
回报 html_内容
其他:
打印(f"无法获取页面。Crawlbase 状态代码: {回复[“标题”]['pc_status']}")
回报 没有

备注:Crawlbase 提供两种类型的令牌:用于静态站点的普通令牌和用于动态或基于浏览器的请求的 JavaScript (JS) 令牌。对于 Groupon,您需要一个 JS 令牌。您可以从 1,000 个免费请求开始,无需信用卡。查看 Crawlbase Crawling API 文档 点击这里.

接下来,我们将指导你设置 Python 并构建使用 Crawlbase 的 Groupon 爬虫 Crawling API 处理 JavaScript 和其他抓取挑战。让我们开始设置过程。

设置 Python 环境

在开始编写 Groupon Scraper 之前,我们需要创建一个可靠的 Python 设置。请按照以下步骤操作。

安装Python

首先,您需要在计算机上安装 Python 来抓取 Groupon。您可以从 python.org 获取最新版本的 Python。

设置虚拟环境

我们建议使用虚拟环境来防止不同项目发生冲突。要创建虚拟环境,请运行以下命令:

1
2
3
4
5
6
7
8
9
# 创建虚拟环境
python-m venv groupon_env

# 激活虚拟环境
# 在 Windows 上:
groupon_env\Scripts\activate

# 在 macOS/Linux 上:
资源 groupon_env/bin/激活

这使您的项目的依赖关系保持分离并且使它们更易于管理。

安装所需的库

现在,在虚拟环境中安装所需的库:

1
pip 安装 crawlbase beautifulsoup4

以下是每个库的简要概述:

  • 爬行基地:使用 Crawlbase 发送请求的主库 Crawling API,它处理抓取 Groupon 所需的 JavaScript 渲染。
  • 大熊猫:存储和管理抓取的数据。
  • 美丽的汤4:解析和浏览 Groupon 页面的 HTML 结构。

选择正确的 IDE

您可以在任何文本编辑器中编写代码,但使用集成开发环境 (IDE) 可以使编码更容易。一些流行的 IDE 包括 VS代码, PyCharmJupyter笔记本。这些工具具有帮助您更好地编写代码的功能,例如突出显示语法、完成代码和查找错误。当您构建 Groupon Scraper 时,这些功能非常有用。

现在您已设置好环境并准备好工具,您可以开始编写抓取工具了。在下一节中,我们将创建一个 Groupon 优惠抓取工具。

抓取 Groupon 优惠信息

在本部分中,我们将解释如何使用 Python 和 Crawlbase 获取 Groupon 的交易 Crawling API。Groupon 使用 JavaScript 渲染和基于滚动的分页,因此简单的抓取方法不起作用。我们将使用 Crawlbase 的 Crawling API,它能够顺利处理 JavaScript 和滚动分页。

我们要抓取的 URL 是: https://www.groupon.com/local/washington-dc

检查 HTML 结构

在编写代码之前,检查 Groupon 优惠页面的 HTML 结构至关重要。这有助于您确定提取数据所需的正确 CSS 选择器。

访问URL: 打开 网址 您的浏览器。
打开开发者工具:右键选择“检查”,打开开发者工具。

Groupon 优惠页面 HTML 结构截图

确定关键要素:Groupon 优惠列表通常位于 <div> 元素与类 cui-content。每笔交易均包含以下详细信息:

  • 职位名称:在 <div> 带有类的标签 cui-udc-title.
  • 链接:链接包含在 <a> 标签。
  • 原价:显示在 <div> 与班级 cui-price-discount-original.
  • 折扣价:显示在 <div> 与班级 cui-price-discount.
  • 地址:可选,通常为 <span> 与班级 cui-location-name.

编写 Groupon 抓取工具

我们将首先编写一个简单的函数来从页面获取交易信息。我们将使用 Crawlbase Crawling API 处理动态内容加载,因为 Groupon 依赖 JavaScript 进行渲染。

这是代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 爬行基地 进口 抓取API
bs4 进口 美丽汤
进口 JSON

# 使用你的访问令牌初始化 CrawlingAPI
爬行 API = 爬行 API({'令牌': 'CRAWLBASE_TOKEN'})

DEF scrape_groupon_with_pagination(基本网址):
选项= {
'ajax_等待' : '真的',
'页面等待': '5000'
}

响应 = crawling_api.get(base_url,选项)
if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')

汤 = BeautifulSoup(html_content, 'html.parser')
交易=汤.find_all('div', 类_=‘cui-内容’)
所有交易 = []

处理 in 交易:
标题 = 交易.查找('div', 类_=‘cui-udc-title’).text.strip() if 交易.查找('div', 类_=‘cui-udc-title’) 其他 ''
链接 = 交易.查找('一种')['href'] if 交易.查找('一种') 其他 ''
原始价格 = 交易.find('div', 类_=‘cui-price-original’).text.strip() if 交易.查找('div', 类_=‘cui-price-original’) 其他 ''
折扣价 = deal.find('div', 类_=‘cui-价格折扣’).文本.剥离().编码(“ascii”, “忽略”)。解码(“utf-8”) if 交易.查找('div', 类_=‘cui-价格折扣’) 其他 ''
位置 = 交易.查找('跨度', 类_=‘cui-位置名称’).text.strip() if 交易.查找('跨度', 类_=‘cui-位置名称’) 其他 ''

all_deals.append({
'标题': 标题,
‘原价’:原价,
'打折后价格':折扣价,
'关联': 关联,
'地点': 地点
})

回报 all_deals
其他:
打印(f“无法获取数据。状态代码: {回复[“标题”]['pc_status']}")
回报 没有

这款 options 参数包括如下设置 ajax_wait 用于处理异步内容加载和 page_wait 等待 5 秒钟后再进行抓取,让所有元素正确加载。您可以阅读有关 Crawlbase 的信息 Crawling API 参数 点击这里.

处理分页

Groupon 使用基于滚动的分页来动态加载其他优惠。为了捕获所有优惠,我们将利用滚动和 scroll_interval Crawlbase 中的选项 Crawling API.

  • scroll=true:启用基于滚动的分页。
  • scroll_interval=10:将滚动时间设置为 10 秒(最多允许 60 秒)。

集成方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
DEF scrape_groupon_with_pagination(网址):
选项= {
'ajax_等待' : '真的',
'滚动': '真的',
'滚动间隔': '10'
}

响应=crawling_api.get(url,选项)
if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')

汤 = BeautifulSoup(html_content, 'html.parser')
交易=汤.find_all('div', 类_=‘cui-内容’)
所有交易 = []

处理 in 交易:
标题 = 交易.查找('div', 类_=‘cui-udc-title’).text.strip() if 交易.查找('div', 类_=‘cui-udc-title’) 其他 ''
链接 = 交易.查找('一种')['href'] if 交易.查找('一种') 其他 ''
原始价格 = 交易.find('div', 类_=‘cui-price-original’).text.strip() if 交易.查找('div', 类_=‘cui-price-original’) 其他 ''
折扣价 = deal.find('div', 类_=‘cui-价格折扣’).文本.剥离().编码(“ascii”, “忽略”)。解码(“utf-8”) if 交易.查找('div', 类_=‘cui-价格折扣’) 其他 ''
位置 = 交易.查找('跨度', 类_=‘cui-位置名称’).text.strip() if 交易.查找('跨度', 类_=‘cui-位置名称’) 其他 ''

all_deals.append({
'标题': 标题,
‘原价’:原价,
'打折后价格':折扣价,
'关联': 关联,
'地点': 地点
})

回报 all_deals
其他:
打印(f“无法获取数据。状态代码: {回复[“标题”]['pc_status']}")
回报 没有

在此功能中,我们使用 Crawlbase 的选项添加了基于滚动的分页处理,确保捕获最大可用的交易。

将数据存储在 JSON 文件中

收集数据后,可以轻松地将其存储在 JSON 文件中:

1
2
3
4
5
6
7
8
9
10
进口 JSON

DEF 保存到json(数据,文件名='groupon_deals.json'):
- 打开(文件名, 'w') as 文件:
json.dump(数据,文件,缩进=4)
打印(f”数据保存至 {文档名称}")

# 抓取后的示例用法
if 交易:
保存到json(交易)

完整代码示例

以下是讨论的所有内容的完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 爬行基地 进口 抓取API
bs4 进口 美丽汤
进口 JSON

# 使用你的访问令牌初始化 CrawlingAPI
爬行 API = 爬行 API({'令牌': 'CRAWLBASE_TOKEN'})

DEF scrape_groupon_with_pagination(网址):
选项= {
'ajax_等待' : '真的',
'滚动': '真的',
'滚动间隔': '60'
}

响应=crawling_api.get(url,选项)
if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')

汤 = BeautifulSoup(html_content, 'html.parser')
交易=汤.find_all('div', 类_=‘cui-内容’)
所有交易 = []

处理 in 交易:
标题 = 交易.查找('div', 类_=‘cui-udc-title’).text.strip() if 交易.查找('div', 类_=‘cui-udc-title’) 其他 ''
链接 = 交易.查找('一种')['href'] if 交易.查找('一种') 其他 ''
原始价格 = 交易.find('div', 类_=‘cui-price-original’).text.strip() if 交易.查找('div', 类_=‘cui-price-original’) 其他 ''
折扣价 = deal.find('div', 类_=‘cui-价格折扣’).文本.剥离().编码(“ascii”, “忽略”)。解码(“utf-8”) if 交易.查找('div', 类_=‘cui-价格折扣’) 其他 ''
位置 = 交易.查找('跨度', 类_=‘cui-位置名称’).text.strip() if 交易.查找('跨度', 类_=‘cui-位置名称’) 其他 ''

all_deals.append({
'标题': 标题,
‘原价’:原价,
'打折后价格':折扣价,
'关联': 关联,
'地点': 地点
})

回报 all_deals
其他:
打印(f“无法获取数据。状态代码: {回复[“标题”]['pc_status']}")
回报 没有

DEF 保存到json(数据,文件名='groupon_deals.json'):
- 打开(文件名, 'w') as 文件:
json.dump(数据,文件,缩进=4)
打印(f”数据保存至 {文档名称}")

if __名字__ == “__主要的__”:
网址= 'https://www.groupon.com/local/washington-dc'
交易 = scrape_groupon_with_pagination(url)

if 交易:
保存到json(交易)

测试刮刀:

创建一个名为的新文件 groupon_deals_scraper.py,将提供的代码复制到此文件中,然后保存。使用以下命令运行脚本:

1
python groupon_deals_scraper.py

您应该在 JSON 文件中看到类似以下示例的输出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[
{
“标题”: “烟囱专家”,
“原价”: “ $ 400”,
“折扣价”: “ $ 69”,
“关联”: “https://www.groupon.com/deals/chimney-pro-1-6”,
“地点”: ""
},
{
“标题”: “温泉世界”,
“原价”: “ $ 40”,
“折扣价”: “ $ 35”,
“关联”: “https://www.groupon.com/deals/spa-world-26”,
“地点”: “中心城”
},
{
“标题”: “国王统治”,
“原价”: “ $ 79.99”,
“折扣价”: “ $ 42.99”,
“关联”: “https://www.groupon.com/deals/gl-kings-dominion-amusement-park”,
“地点”: “国王统治”
},
{
“标题”: “前 30 周 5% 折扣 + 免费送货(Blue Apron 优惠券)”,
“原价”: "",
“折扣价”: "",
“关联”: “https://www.groupon.com/deals/cpn-blueapron-q3sl”,
“地点”: ""
},
{
“标题”: “Valvoline 即时换油 - VA”,
“原价”: “ $ 50.99”,
“折扣价”: “ $ 39.99”,
“关联”: “https://www.groupon.com/deals/valvoline-instant-oil-change-dc-4”,
“地点”: “多个地点”
},
.... 更多的
]

抓取 Groupon 优惠券

在本部分中,我们将学习如何使用 Python 和 Crawlbase 从 Groupon 获取优惠券 Crawling API。Groupon 的优惠券页面看起来与其优惠页面略有不同,因此我们需要查看 HTML 结构。我们将使用 Crawlbase API 获取优惠券标题、到期说明及其链接。

我们将抓取此 URL: https://www.groupon.com/coupons/amazon

检查 HTML 结构

为了有效地抓取 Groupon 优惠券,必须识别包含数据的关键 HTML 元素:

访问URL: 打开 网址 您的浏览器。

Groupon 优惠券页面 HTML 结构的屏幕截图

打开开发者工具:在网页上点击右键,选择“检查”,打开开发者工具。

找到优惠券容器:Groupon 的优惠券列表通常在 <div> 带有类的标签 coupon-offer-tile. 每个优惠券区块包含:

  • 职位名称:在 <h2> 元素与类 coupon-tile-title.
  • 标注:标注位于 <div> 元素与类 coupon-tile-callout.
  • 描述:通常发现于 <p> 与班级 coupon-tile-description.
  • 优惠券类型:在 <span> 带有类的标签 coupon-tile-type.

编写 Groupon 优惠券抓取程序

我们将编写一个使用 Crawlbase 的函数 Crawling API 在抓取优惠券数据时处理动态内容渲染和分页。以下是实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 爬行基地 进口 抓取API
bs4 进口 美丽汤
进口 JSON

# 使用你的访问令牌初始化 Crawlbase CrawlingAPI
爬行 API = 爬行 API({'令牌': 'YOUR_CRAWLBASE_TOKEN'})

DEF scrape_groupon_coupons(网址):
选项= {
'ajax_等待' : '真的',
'页面等待': '5000'
}

响应=crawling_api.get(url,选项)

if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')

汤 = BeautifulSoup(html_content, 'html.parser')
优惠券 = 汤.选择('li.优惠券列表行 > div.优惠券优惠图块')

scraped_coupons = []
优惠券 in 优惠券:
标题 = 优惠券.查找('h2', 类_=‘优惠券标题’).文本.剥离().编码(“ascii”, “忽略”)。解码(“utf-8”) if 优惠券.查找('h2', 类_=‘优惠券标题’) 其他 ''
标注 = 优惠券.查找('div', 类_=‘优惠券图块标注’).text.strip() if 优惠券.查找('div', 类_=‘优惠券图块标注’) 其他 ''
描述 = 优惠券.查找('p', 类_=‘优惠券标题描述’).文本.剥离().编码(“ascii”, “忽略”)。解码(“utf-8”) if 优惠券.查找('p', 类_=‘优惠券标题描述’) 其他 ''
类型 =优惠券.查找('跨度', 类_=‘优惠券图块类型’).text.strip() if 优惠券.查找('跨度', 类_=‘优惠券图块类型’) 其他 ''

scraped_coupons.append({
'标题': 标题,
'大喊': 大喊,
'描述': 描述,
'类型': 类型
})

回报 scraped_coupons
其他:
打印(f“无法检索数据。状态代码: {回复[“标题”]['pc_status']}")
回报 没有

将数据存储在 JSON 文件中

获得优惠券数据后,您可以将其存储在 JSON 文件中,以便于访问和分析:

1
2
3
4
DEF 保存优惠券到json(数据,文件名='groupon_coupons.json'):
- 打开(文件名, 'w') as 文件:
json.dump(数据,文件,缩进=4)
打印(f”优惠券数据已保存至 {文档名称}")

完整代码示例

以下是抓取 Groupon 优惠券的完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 爬行基地 进口 抓取API
bs4 进口 美丽汤
进口 JSON

# 使用你的访问令牌初始化 Crawlbase CrawlingAPI
爬行 API = 爬行 API({'令牌': 'YOUR_CRAWLBASE_TOKEN'})

DEF scrape_groupon_coupons(网址):
选项= {
'ajax_等待' : '真的',
'页面等待': '5000'
}

响应=crawling_api.get(url,选项)

if 回复[“标题”]['pc_status'] == '200':
html_内容=响应['身体']。解码('utf-8')

汤 = BeautifulSoup(html_content, 'html.parser')
优惠券 = 汤.选择('li.优惠券列表行 > div.优惠券优惠图块')

scraped_coupons = []
优惠券 in 优惠券:
标题 = 优惠券.查找('h2', 类_=‘优惠券标题’).文本.剥离().编码(“ascii”, “忽略”)。解码(“utf-8”) if 优惠券.查找('h2', 类_=‘优惠券标题’) 其他 ''
标注 = 优惠券.查找('div', 类_=‘优惠券图块标注’).text.strip() if 优惠券.查找('div', 类_=‘优惠券图块标注’) 其他 ''
描述 = 优惠券.查找('p', 类_=‘优惠券标题描述’).文本.剥离().编码(“ascii”, “忽略”)。解码(“utf-8”) if 优惠券.查找('p', 类_=‘优惠券标题描述’) 其他 ''
类型 =优惠券.查找('跨度', 类_=‘优惠券图块类型’).text.strip() if 优惠券.查找('跨度', 类_=‘优惠券图块类型’) 其他 ''

scraped_coupons.append({
'标题': 标题,
'大喊': 大喊,
'描述': 描述,
'类型': 类型
})

回报 scraped_coupons
其他:
打印(f“无法检索数据。状态代码: {回复[“标题”]['pc_status']}")
回报 没有

DEF 保存优惠券到json(数据,文件名='groupon_coupons.json'):
- 打开(文件名, 'w') as 文件:
json.dump(数据,文件,缩进=4)
打印(f”优惠券数据已保存至 {文档名称}")

if __名字__ == “__主要的__”:
网址= 'https://www.groupon.com/coupons/amazon'
优惠券 = scrape_groupon_coupons(网址)

if 优惠券:
save_coupons_to_json(优惠券)

测试刮刀:

将代码保存到名为 groupon_coupons_scraper.py.使用以下命令运行脚本:

1
python groupon_coupons_scraper.py

运行脚本后,你会发现优惠券数据保存在名为 groupon_coupons.json.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[
{
“标题”: “亚马逊促销代码”,
“大喊”: “促销代码”,
“说明”: “点击此处,即可使用优惠券和促销代码节省家居用品、美容产品以及亚马逊销售的其他所有商品的费用”,
“类型”: “优惠券代码”
},
{
“标题”: “亚马逊 Prime 专属促销代码”,
“大喊”: “最高 80% 折扣”,
“说明”: “这里提供大量亚马逊促销代码、优惠券等。每日添加新优惠!”,
“类型”: “优惠券代码”
},
{
“标题”: “亚马逊促销代码最高可享 65% 折扣”,
“大喊”: “最高 65% 折扣”,
“说明”: “每日特价可节省高达 65%。单击此处获取最新的列表和可用性。”,
“类型”: “优惠券代码”
},
{
“标题”: “消费 50 美元,节省 15%”,
“大喊”: “15% 折扣”,
“说明”: “这个非常简单。在亚马逊上消费 50 美元即可享受总价 15% 的折扣。无需促销代码!”,
“类型”: “促销”
},
{
“标题”: “及以上 | 亚马逊促销和优惠券代码”,
“大喊”: “促销代码”,
“说明”: “大量经过审查的准确促销代码,适用于各种顶级产品。这才是真正的优惠!”,
“类型”: “优惠券代码”
},
.... 更多的
]

总结

构建 Groupon 抓取工具可帮助你随时了解最优惠的交易, 促销代码 和优惠券。Python 和 爬虫库 Crawling API 让您轻松抓取 Groupon 页面。您可以处理动态内容并提取有用的数据。

本指南向您展示了如何设置环境、编写 Groupon 优惠和优惠券抓取工具、处理分页以及保存数据。如果您想跟踪特定位置的优惠或查找最新的优惠券,设计良好的 Groupon 抓取工具可以自动执行该过程。

如果您想扩展您的网络抓取功能,请考虑探索我们以下有关抓取其他重要网站的指南。

📜 如何抓取谷歌财经
📜 如何抓取 Google 新闻
📜 如何抓取谷歌学术搜索结果
📜 如何抓取 Google 搜索结果
📜 如何抓取谷歌地图
📜 如何抓取雅虎财经
📜 如何刮 Zillow

如果您有任何问题或反馈,我们的 支持团队 随时为您的网络抓取之旅提供帮助。快乐刮擦!

常见问题

如果您自己抓取 Groupon 数据并遵守网站允许的规则,则抓取 Groupon 数据并不违反规则。但请务必查看 Groupon 规则,检查您所做的事情是否正确。如果您想出于商业目的抓取 Groupon 数据,您应该先咨询网站,以免惹上麻烦。

问:为什么要使用 Crawlbase Crawling API 而不是更简单的方法?

Groupon 很大程度上依赖 JavaScript 来显示内容。常规抓取工具(如请求和 BeautifulSoup)无法处理这个问题。 爬虫库 Crawling API 有助于解决这些问题。即使有 JavaScript 并且您需要滚动才能查看更多商品,它也能让您抢到优惠和优惠券。

问:如何存储抓取的 Groupon 数据?

您可以选择以不同的格式(如 JSON、CSV 甚至数据库)保存抓取的 Groupon 数据。在本指南中,我们专注于将数据保存在 JSON 文件中,因为它易于处理并且适用于大多数项目。JSON 还可以保持数据结构完整,这使得以后的分析变得简单。