在当今数据驱动的世界中,网络抓取已成为个人和企业不可或缺的工具。 它使我们能够从网站中提取有价值的信息,将非结构化数据转化为可操作的见解。 在众多可供抓取的网站中,世界上最大的零售商之一沃尔玛作为产品数据的宝贵来源脱颖而出。 无论您是希望监控竞争对手价格的电子商务企业家,还是对分析市场趋势感兴趣的数据爱好者,抓取沃尔玛产品页面都可以为您提供大量可供使用的数据。

在本分步指南中,我们将探索网络抓取的艺术和科学,特别关注有效抓取沃尔玛产品页面。 我们将使用 蟒蛇 编程语言,网络抓取领域的一种多功能且广泛使用的工具,以及 Crawlbase 爬取 API 简化流程。 在本指南结束时,您将具备从沃尔玛庞大的在线目录中收集产品标题、价格、评级和其他有价值数据的知识和工具。

在探讨技术方面之前,让我们花点时间了解一下为什么网络抓取很重要,以及为什么抓取沃尔玛产品页面可以为各种目的改变游戏规则。

目录

  1. 入门
  • 网页抓取的重要性
  • 为什么要刮沃尔玛?
  • 使用的工具和技术
  1. 配置
  • 安装Python和必要的库
  • 创建虚拟环境
  • 获取 Crawlbase API 密钥
  1. 了解沃尔玛搜索页面结构
  • 沃尔玛搜索页面的布局
  • 检查 HTML 以获取 CSS 选择器
  1. 构建你的沃尔玛抓取工具
  • 使用 Crawlbase Python 库
  • 管理参数和定制响应
  • 抓取沃尔玛搜索页面
  • 处理搜索页面上的分页
  1. 数据存储
  • 将抓取的数据存储在 CSV 文件中
  • 将抓取的数据存储在 SQLite 数据库中
  1. 结论
  2. 常见问题

2.开始治疗

在这个数据驱动的世界中,从网络收集和分析信息的能力已成为一项强大的资产。 这就是网络抓取(从网站提取数据的过程)发挥作用的地方。 它充当了浩瀚的在线信息海洋和您的特定数据需求之间的桥梁。 无论是在商业、研究还是只是好奇,网络抓取都可以让您访问、分析和利用曾经被锁在互联网深处的数据。

网页抓取的重要性

网络抓取是一种变革性技术,在数据驱动决策时代发挥着关键作用。 它需要从网站中提取数据,然后可以将这些数据用于各个领域的各种目的。 无论您是业务专业人士、数据分析师、研究人员,还是仅仅是信息爱好者,网络抓取都可以改变您寻求数据的游戏规则。

网络抓取的重要性在于它能够将非结构化网络数据转换为易于分析、可视化和集成到应用程序中的结构化数据集。 它使您能够随时了解情况、做出有数据支持的决策,并在日益数字化的世界中获得竞争优势。 通过自动化数据收集过程,网络抓取可以节省时间和资源,否则这些时间和资源将花费在手动数据输入和监控上。 它为研究、市场分析、竞争情报和创新开辟了新的机会。

为什么要抢夺沃尔玛?

在广阔的电子商务领域,沃尔玛是巨头之一。 它拥有广泛的产品、有竞争力的价格和庞大的客户群。 因此,从沃尔玛网站提取数据可以为各种目的提供宝贵的见解,从市场研究和价格跟踪到竞争对手分析和库存管理。

为什么要刮沃尔玛
  1. 竞争情报:对于企业来说,监控竞争对手在沃尔玛上的产品列表、价格和客户评论可以提供宝贵的市场情报。 您可以根据实时数据调整定价策略、优化产品描述或定制营销工作。
  2. 市场调查:网络抓取可让您跟踪市场趋势和消费者偏好。 您可以识别新兴产品、监控定价动态并更深入地了解目标受众的购买行为。
  3. 库存管理:零售商可以使用抓取的数据将其库存与沃尔玛的产品同步。 有关产品可用性和定价的实时数据可确保您的库存保持竞争力和最新状态。
  4. 消费者反馈:沃尔玛平台上产品的评论和评级是顾客情绪的金矿。 通过抓取这些数据,您可以了解客户喜欢或不喜欢特定产品的哪些方面,从而有助于产品开发和增强。
  5. 价格监控:沃尔玛经常调整产品价格以保持竞争力。 如果您是零售商或经销商,监控这些价格波动可以帮助您做出明智的定价决策并保持市场竞争力。

2. 使用的工具和技术

以下工具和技术将促进我们进入网络抓取沃尔玛产品页面的世界:

  • 蟒蛇:Python 因其简单性、多功能性和丰富的库生态系统而成为我们选择的编程语言。 它为我们提供了编写抓取代码并有效处理提取的数据的工具。
  • Crawlbase 爬取 API:虽然 Python 为我们提供了脚本编写功能,但我们将依靠 Crawlbase 爬行 API 来精确可靠地获取沃尔玛产品页面。 这就是我们选择使用此 API 的原因:
    • 效率:Crawlbase 简化了向网站发出 HTTP 请求、检索 HTML 内容以及浏览网页的过程。 从沃尔玛等大型电子商务网站抓取数据时,这种效率尤其有价值。
    • 值得信赖:Crawlbase 爬行 API 旨在处理复杂的网络抓取,例如处理 cookie、管理标头以及处理反抓取措施。 它确保我们能够不间断地持续访问所需的数据。
    • 可扩展性:无论您是抓取几个产品页面还是数千个产品页面,Crawlbase 都可以提供可扩展性。 抓取 API 提供轮换 IP 地址的功能,提供匿名性并降低被网站阻止的风险。 它可以轻松处理小型和大型网络抓取项目。
    • 数据丰富:除了基本的 HTML 内容之外,Crawlbase 还可以提取其他数据,例如 JavaScript 渲染的内容,使其成为抓取动态网站的可靠选择。

现在我们已经了解了网络抓取的重要性以及抓取沃尔玛产品页面的具体优势,让我们更深入地了解技术方面。 我们将首先设置我们的环境,获取必要的工具,并为令人兴奋的网络抓取之旅做好准备。

3. 设置

在我们开始网络抓取之旅以从沃尔玛产品页面提取有价值的数据之前,设置我们的环境至关重要。 本节将指导您完成必要的步骤,为网络抓取做好系统准备。 我们将介绍安装 Python 和基本库、创建虚拟环境以及获取 Crawlbase API 密钥。

安装 Python 和基本库

Python 是我们网络抓取操作的核心,我们需要一些基本的库来使我们的任务更易于管理。 请按照以下步骤设置 Python 和所需的库:

  • Python安装:如果您的系统上尚未安装 Python,您可以从以下位置下载最新版本: Python官方网站。 选择适合您的操作系统(Windows、macOS 或 Linux)的版本。

  • 包管理器 - pip:Python 附带了一个强大的包管理器,称为 pip。 它允许您轻松安装和管理Python包。 要检查是否安装了 pip,请打开终端或命令提示符并运行以下命令:

    1
    点 - 翻译
    • 请注意: If pip 未安装,Python 安装程序通常包含它。 您还可以参考 官方 pip 文档 有关安装说明。
  • 必要的图书馆:我们需要两个基本的 Python 库来进行网页抓取:

    • 抓取库:Crawlbase Python 库允许我们向 Crawlbase Crawling API 发出 HTTP 请求,简化了获取网页和处理响应的过程。 要安装它,请使用 pip:
    1
    点安装爬虫库
    • 美丽的汤:Beautiful Soup 是一个 Python 库,可以轻松解析 HTML 并从网页中提取数据。 要安装它,请使用 pip:
    1
    点安装beautifulsoup4
    • 熊猫图书馆:此外,我们还将使用 Pandas 库来实现高效的数据存储和操作。 Pandas 提供强大的数据结构和数据分析工具。 要安装 Pandas,请使用 pip:
    1
    pip 安装熊猫

有了 Python 和这些必要的库,我们就可以继续下一步:创建虚拟环境。

创建虚拟环境

创建虚拟环境是处理 Python 项目时的最佳实践。 它允许您隔离项目特定的依赖关系,防止与系统范围的包发生冲突。 要创建虚拟环境,请按照下列步骤操作:

  1. 打开终端或命令提示符:启动终端或命令提示符,具体取决于您的操作系统。
  2. 导航到您的项目目录:使用 cd 命令导航到您计划在其中进行网页抓取项目的目录。 例如:
1
cd 路径/到/您的/项目/目录
  1. 创建虚拟环境:执行以下命令创建虚拟环境:
1
python -m venv 沃尔玛-venv

此命令将在您的项目目录中创建一个名为“walmart-venv”的文件夹,其中包含一个干净的 Python 环境。

  1. 激活虚拟环境:根据您的操作系统,使用适当的命令来激活虚拟环境:
  • Windows:
    1
    walmart-venv\Scripts\activate
  • macOS 和 Linux:
    1
    资源 沃尔玛-venv/bin/activate

激活后,您的终端提示符应该会发生变化,表明您现在正在虚拟环境中工作。

设置并激活虚拟环境后,您可以安装特定于项目的包并在隔离环境中处理网络抓取代码。

获取 Crawlbase API 令牌

我们将使用 Crawlbase Crawling API 高效地从网站中抓取数据。 此 API 简化了向网站发出 HTTP 请求、处理 IP 轮换以及管理验证码等 Web 障碍的过程。 以下是获取 Crawlbase API 令牌的方法:

  1. 访问 Crawlbase 网站:去吧 抓取基地网站 在您的网络浏览器中。
  2. 注册或登录:如果您还没有帐户,请注册一个 Crawlbase 帐户。 如果您有帐户,请登录。
  3. 获取您的API令牌:登录后,导航至文档以获取 API 令牌。 Crawlbase 允许用户在两​​种令牌类型之间进行选择:普通 (TCP) 令牌和 JavaScript (JS) 令牌。 在处理变化最小的网站(例如静态网站)时,请选择普通令牌。 但是,如果您的目标站点依赖 JavaScript 来运行,或者关键数据是在用户端通过 JavaScript 生成的,则 JavaScript 令牌就变得不可或缺。 例如,当从沃尔玛抓取数据时,JavaScript 令牌是访问所需信息的关键。 您可以获得您的 API 令牌 相关信息.
  4. 确保您的 API 令牌安全:您的 API 令牌是宝贵的资产,因此请确保其安全。 请不要公开共享它,并避免将其提交给 Git 等版本控制系统。 您将在 Python 代码中使用此 API 令牌来访问 Crawlbase 爬网 API。

安装了 Python 和基本库、创建了虚拟环境并掌握了 Crawlbase API 令牌后,您就可以准备好深入研究网络抓取沃尔玛产品页面了。 在接下来的部分中,我们将探索 Walmart 页面的结构并开始发出 HTTP 请求来检索我们需要的数据。

4. 了解沃尔玛搜索页面结构

在本节中,我们将剖析沃尔玛网站的布局,确定我们想要抓取的关键数据点,并探索如何检查页面的 HTML 来派生用于数据提取的基本 CSS 选择器。 当我们踏上有效抓取沃尔玛产品页面的旅程时,了解这些基础知识至关重要。

沃尔玛搜索页面的布局

为了有效地从沃尔玛的搜索页面中抓取数据,必须了解这些页面精心设计的布局。 沃尔玛在设计其搜索结果页面时考虑到了用户体验,但这种结构化格式也非常适合网络抓取工作。

以下是典型沃尔玛搜索页面上常见基本元素的详细分类:

沃尔玛搜索页面

搜索栏:搜索栏位于页面顶部的显着位置,是通往沃尔玛广泛产品数据库的门户。 购物者使用此功能输入搜索查询并启动产品探索。

搜索结果网格:该页面在搜索过滤器下方显示产品列表网格。 每个列表都包含重要信息,包括产品标题、价格和评级。 这些数据点是我们网络抓取任务的皇冠上的宝石。

产品卡:每个产品列表都封装在产品卡中,使其成为网格中的离散实体。 这些卡片通常包括图像、产品标题、价格和评级。 从这些卡片中提取数据是我们在网络抓取过程中的主要关注点。

分页控件:在搜索结果超出单个页面的情况下,沃尔玛精心设计了页面底部的分页控件。 这些控件允许用户浏览其他结果页面。 作为抓取工具,我们必须能够处理分页以进行全面的数据收集。

过滤器和排序选项:沃尔玛为用户提供各种过滤器和排序选项来优化他们的搜索结果。 虽然这些功能对用户来说至关重要,但它们通常是网络抓取工作的其他重点。

检查 HTML 以获取 CSS 选择器

我们必须识别包含我们想要从网页中提取数据的信息的 HTML 元素。 这项任务正是 Web 开发工具和浏览器开发工具来拯救我们的地方。 让我们概述一下如何检查 HTML 结构并挖掘那些宝贵的 CSS 选择器:

沃尔玛搜索页面检查
  1. 打开网页:导航至沃尔玛网站并登陆您感兴趣的搜索页面。
  2. 右键单击并检查:在您想要提取的元素(例如产品卡)上发挥您的右键单击能力,然后从上下文菜单中选择“检查”或“检查元素”。 这个神秘的咒语将召唤浏览器的开发工具。
  3. 找到 HTML 源代码:在开发者工具的范围内,网页的 HTML 源代码将揭露其秘密。 将光标悬停在 HTML 面板中的各个元素上,然后见证网页的相应部分神奇地亮起。
  4. 识别 CSS 选择器:要从特定元素中释放数据,请在开发人员工具中右键单击它,然后优雅地选择“复制”>“复制选择器”。 这个优雅的操作会将该元素的 CSS 选择器传输到剪贴板,准备好在网页抓取咒语中使用。

通过深入研究 HTML 并提取那些难以捉摸的 CSS 选择器,您将能够在制作网页抓取交响乐时精确定位正确的元素。 在接下来的部分中,这些选择器将充当与数据产生共鸣的空灵字符串,巧妙地从沃尔玛的网页中提取数据。

现在我们已经彻底探索了沃尔玛网站的迷宫结构,并掌握了 CSS 选择器发现的艺术,我们准备将理论转化为实践。 在接下来的部分中,我们将踏上令人兴奋的编码之旅,其中我们将使用 Python、Crawlbase 爬行 API 和 Beautiful Soup 熟练地从沃尔玛的搜索页面中抓取数据。

5. 构建你的沃尔玛抓取工具

现在我们已经通过了解网络抓取的重要性、设置环境并探索沃尔玛网站的复杂结构奠定了基础,是时候卷起袖子构建我们的沃尔玛抓取工具了。 在本节中,我们将逐步指导您完成整个过程,利用强大的 Crawlbase Python 库以及 Python 编程,让您的网络抓取之旅变得轻而易举。

使用 Crawlbase Python 库

Crawlbase Python 库充当 Crawlbase API 的轻量级且无依赖性的包装器,简化了复杂的网络抓取过程。 这款多功能工具可简化任务,例如向网站发出 HTTP 请求、熟练处理 IP 轮换以及优雅地穿越网络障碍(包括验证码)。 要使用此库开始您的网络抓取之旅,您可以无缝地执行以下步骤:

  1. 进口:要使用 Crawlbase 库中强大的 Crawling API,您必须首先导入不可或缺的 CrawlingAPI 类。 这一基础步骤为访问一系列 Crawlbase API 铺平了道路。 以下是如何导入这些 API 的概览:
1
 爬行基地 进口 抓取API
  1. 初始化:有了您的 Crawlbase API 令牌,下一个关键步骤涉及初始化 CrawlingAPI 类。 这个关键时刻将您的代码与 Crawlbase 的巨大功能连接起来:
1
api = 爬行API({ '令牌': 'YOUR_CRAWLBASE_TOKEN' })
  1. 发送请求:一旦您的 CrawlingAPI 类准备好使用 Crawlbase API 令牌,您就可以向目标网站发送请求。 下面是一个专门为从沃尔玛搜索页面抓取 iPhone 列表而设计的 GET 请求的实际示例:
1
2
3
响应 = api.get('https://www.walmart.com/search?q=iPhone')
if 回复['状态代码'] == 200:
打印(回复['身体'])

有了 Crawlbase Python 库作为您值得信赖的伴侣,您就可以自信地踏上您的网络抓取之旅。 要更深入地了解其功能,您可以探索更多详细信息 相关信息.

管理参数和定制响应

在开始网络抓取之旅之前,了解如何使用 Crawlbase 抓取 API 有效管理参数和自定义响应至关重要。 这种灵活性使您能够精确地制定请求以满足您的独特要求,从而提供真正定制的高效抓取体验。 让我们深入研究参数管理和响应定制的复杂性。

使用 Crawlbase 爬网 API 进行参数管理

Crawlbase 抓取 API 提供了大量可供您使用的参数,使您能够微调您的抓取请求。 这些参数可以根据您的独特需求进行定制,使您的网络抓取工作更加高效和精确。 您可以在以下位置探索可用参数的完整列表 API文档.

为了用一个实际的例子来说明参数的用法,假设您想要抓取沃尔玛的 iPhone 产品列表。 您可以向沃尔玛搜索页面发出 GET 请求,同时指定“user_agent”和“format”等参数:

1
2
3
4
5
6
响应 = api.get('https://www.walmart.com/search?q=iPhone',{
'用户代理': 'Mozilla/5.0(Windows NT 6.2;rv:20.0)Gecko/20121202 Firefox/30.0',
'格式': 'json'
})
if 回复['状态代码'] == 200:
打印(回复['身体'])

在此示例中,我们设置“user_agent”参数来模拟特定的浏览器用户代理,并选择“JSON”格式作为响应。 这些参数允许您根据您的具体要求精确定制您的请求。

自定义响应格式

与 Crawlbase 交互时,您可以灵活地选择两种响应格式:HTML 和 JSON。 您的选择取决于您的偏好和解析需求。

HTML 响应格式:如果您选择 HTML 响应格式(默认),您将收到网页的原始 HTML 内容作为响应。 此外,关键的响应参数将被方便地添加到响应标头中以便于访问。 以下是此类响应的示例:

1
2
3
4
5
6
7
:
网址: HTTPS://www.walmart.com/search?q=iPhone
原始状态: 200
电脑状态: 200

Body:
页面的 HTML

JSON 响应格式:或者,您可以选择 JSON 响应格式。 在这种情况下,您将收到一个结构良好的 JSON 对象,您的应用程序可以轻松处理该对象。 该 JSON 对象包含所有必要的信息,包括响应参数。 以下是 JSON 响应的示例:

1
2
3
4
5
6
{
“原始状态”: “200”,
“电脑状态”: 200,
“网址”: "https%3A%2F%2Fwalmart.com%2Fsearch%3Fq%3DiPhone",
“身体”: “页面的 HTML”
}

通过管理参数和自定义响应格式的能力,您可以使用工具来微调您的抓取请求并定制输出以最好地满足您的项目需求。 这种级别的控制可确保无缝且高效的网页抓取体验,使您能够从沃尔玛网页中提取所需的精确数据。

抓取沃尔玛搜索页面

现在我们已经对网络抓取基础知识以及如何有效利用 Crawlbase Python 库有了深入的了解,是时候开始抓取沃尔玛搜索页面的实践之旅了。 在这个以开发人员为中心的部分中,我们将构建一个 Python 脚本,该脚本可以熟练地从沃尔玛的搜索结果页面捕获产品数据。

该脚本封装了网页抓取的本质:发出 HTTP 请求、解析 HTML 内容并提取我们寻求的关键信息。

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
# 导入必要的库
进口 JSON
bs4 进口 美丽汤
爬行基地 进口 抓取API

# 使用您的 Crawlbase API 令牌初始化 CrawlingAPI 类
api = 爬行API({ '令牌': 'YOUR_CRAWLBASE_JS_TOKEN' })

# 定义搜索查询
搜索查询= 'iPhone'

# 构造请求URL
搜索网址 = f'https://www.walmart.com/search?q={搜索查询}'

尝试:
# 向沃尔玛搜索页面发出 GET 请求
响应 = api.get(search_url, { '页面等待': 5000 })

# 检查请求是否成功(状态码200)
if 回复['状态代码'] == 200:
# 解码字节数据后提取的HTML内容
搜索页面 html = 响应['身体']。解码('拉丁1')

# 使用 Beautiful Soup 解析 HTML 内容
汤= BeautifulSoup(search_page_html, 'html.parser')

# 提取产品详细信息
产品详细信息 = []

# 查找页面上所有产品容器
产品容器 = soup.select('div[io-id] div[数据项-id]')

# 遍历每个产品容器
容器 in 产品容器:
产品 = {}

# 提取产品价格
产品['价格'] = 容器.select_one('div[data-automation-id="产品价格"] span.f2').text.strip()

# 提取产品标题
产品['标题'] = 容器.select_one('跨度[data-automation-id =“产品标题”]').text.strip()

# 提取产品评分
ratingElement = 容器.select_one('跨度[data-automation-id =“产品标题”]').find_parent('跨度')。找下一个('div').select_one('span.w_iUH7')
产品['评分'] = ratingElement.text.strip() if 评级元素 其他 ''

# 将产品详细信息添加到列表中
产品详细信息.append(产品)

打印(json.dumps(产品详细信息,缩进=2))

特殊课程 as e:
打印(f“发生错误: {e}")

在此脚本中,我们导入 BeautifulSoup 和 Crawlbase Python 库。 使用 Crawlbase API 令牌初始化 CrawlingAPI 类后,我们定义搜索查询,构建沃尔玛搜索页面 URL,并使用 Crawlbase API 发出 GET 请求。

请求成功后(状态代码 200),我们使用 BeautifulSoup 提取并解析搜索页面的 HTML 内容。 然后,我们专注于产品容器,提取基本的产品详细信息,例如标题、价格和评级。
这些详细信息被组织成一个列表以供进一步处理,脚本最后会打印抓取的产品数据。 该脚本提供了使用网络抓取技术从沃尔玛的搜索结果页面提取有价值信息的实际演示。

示例输出:

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
[
{
“价钱”: “399”,
“标题”: “AT&T Apple iPhone 11,64GB,黑色 - 预付费智能手机”,
“评分”: “3.8 颗星,最多 5 颗星。202 条评论”
},
{
“价钱”: “249”,
“标题”: “Straight Talk Apple iPhone 11,64GB,黑色 - 预付费智能手机 [锁定为 Straight Talk]”,
“评分”: “4.2 颗星,最多 5 颗星。3244 条评论”
},
{
“价钱”: “249”,
“标题”: “Walmart Family Mobile Apple iPhone 11,64GB,黑色 - 预付费智能手机 [锁定至 Walmart Family Mobile]”,
“评分”: “4.1 颗星,最多 5 颗星。371 条评论”
},
{
“价钱”: “149”,
“标题”: “Straight Talk Apple iPhone SE(2022 年第 3 代)5G、64GB、午夜 - 预付费智能手机 [锁定为 Straight Talk]”,
“评分”: “4.3 颗星,最多 5 颗星。576 条评论”
},
{
“价钱”: “31”,
“标题”: “AT&T iPhone 15 Pro Max 256GB 天然钛金属”,
“评分”: “5 颗星,最多 5 颗星。2 条评论”
},
{
“价钱”: “31”,
“标题”: “Verizon iPhone 15 Pro Max 256GB 天然钛金”,
“评分”: “3.7 颗星,最多 5 颗星。3 条评论”
},
{
“价钱”: “26”,
“标题”: “AT&T iPhone 15 Pro 128GB 天然钛”,
“评分”: ""
},
{
“价钱”: “26”,
“标题”: “Verizon iPhone 15 Pro 128GB 天然钛金属”,
“评分”: “4 颗星,最多 5 颗星。1 条评论”
},
{
“价钱”: “24”,
“标题”: “AT&T iPhone 15 Plus 128GB 黑色”,
“评分”: ""
},
....
]

处理搜索页面上的分页

沃尔玛搜索结果通常是分页的,这意味着有多个搜索结果页面可供浏览。 要抓取所有相关数据,我们需要通过迭代页面并从每个页面提取数据来处理分页。

以下是如何从沃尔玛多个页面抓取搜索结果的示例:

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
54
55
56
57
58
59
进口 JSON
bs4 进口 美丽汤
爬行基地 进口 抓取API

# 使用您的 Crawlbase API 令牌初始化 CrawlingAPI 类
api = 爬行API({'令牌': 'YOUR_CRAWLBASE_JS_TOKEN'})

DEF 获取总页数(搜索网址):
尝试:
响应 = api.get(search_url, {'页面等待': 5000})
if 回复['状态代码'] == 200:
搜索页面 html = 响应['身体']。解码('拉丁1')
汤= BeautifulSoup(search_page_html, 'html.parser')
总页数= INT(汤.select_one('nav[aria-label="分页"] ul li:nth-last-child(2)')。文本)
回报 总页数
特殊课程 as e:
打印(f“获取总页数时发生错误: {e}")
回报 1

DEF 刮页(页面地址):
尝试:
响应 = api.get(page_url, {'页面等待': 5000})
if 回复['状态代码'] == 200:
page_html = 响应['身体']。解码('拉丁1')
page_soup = BeautifulSoup(page_html, 'html.parser')
产品容器 = page_soup.select('div[io-id] div[数据项-id]')
产品详细信息 = []
容器 in 产品容器:
产品 = {}
产品['价格'] = 容器.select_one('div[data-automation-id="产品价格"] span.f2').text.strip()
产品['标题'] = 容器.select_one('跨度[data-automation-id =“产品标题”]').text.strip()
ratingElement = 容器.select_one('跨度[data-automation-id =“产品标题”]').find_parent('跨度')。找下一个('div').select_one('span.w_iUH7')
产品['评分'] = ratingElement.text.strip() if 评级元素 其他 ''
产品详细信息.append(产品)
回报 产品详情
特殊课程 as e:
打印(f“抓取页面时发生错误: {e}")
回报 []

DEF ():
# 定义搜索查询
搜索查询= 'iPhone'

# 构造第一页的请求URL
搜索网址 = f'https://www.walmart.com/search?q={搜索查询}'

总页数 = get_total_pages(search_url)
所有产品详细信息 = []

in 范围(1, 总页数 + 1):
页面网址 = f'{搜索网址}&页面={页}'
page_product_details = scrape_page(page_url)
all_product_details.extend(page_product_details)

# 打印或保存所有产品详细信息
打印(json.dumps(all_product_details, 缩进=2))

if __名字__ == “__主要的__”:
主()

该 Python 脚本可以有效地从沃尔玛的搜索结果页面中抓取产品数据,同时无缝处理分页。 它通过两个核心功能来实现这一点: get_total_pagesscrape_page.

get_total_pages 函数通过向初始搜索页面发送 GET 请求来获取给定搜索查询的总页面数。 然后它解析 HTML 内容,从分页列表中提取最后一个页码。 这可确保脚本了解需要抓取的页面数量。

scrape_page 函数处理产品数据的实际抓取。 它输入特定的搜索页面 URL,发出 GET 请求,并使用 BeautifulSoup 提取产品详细信息,例如标题、价格和可选的评级。 它优雅地解释了产品可能没有评级的情况。

main 函数中,脚本定义搜索查询,构造初始搜索页面的 URL,并计算总页面数。 然后它会遍历每个页面,抓取产品详细信息并将其累积在列表中。 最后,它以简洁的 JSON 格式打印收集到的产品详细信息。 这种方法允许从多个搜索结果页面提取全面的数据,确保分页期间不会忽略任何产品详细信息。

数据存储

成功从沃尔玛搜索页面抓取数据后,下一个关键步骤是存储这些有价值的信息以供将来分析和参考。 在本节中,我们将探讨两种常见的数据存储方法:将抓取的数据保存在 CSV 文件中并将其存储在 SQLite 数据库中。 这些方法使您可以有效地组织和管理抓取的数据。

将抓取的数据存储在 CSV 文件中

CSV(逗号分隔值)是一种广泛使用的用于存储表格数据的格式。 这是一种简单且人类可读的存储结构化数据的方式,使其成为保存抓取的沃尔玛产品数据的绝佳选择。

我们将扩展之前的网页抓取脚本,添加使用流行的 Python 库 pandas 将抓取的数据保存到 CSV 文件中的步骤。 这是该脚本的更新版本:

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
进口 大熊猫 as pd
bs4 进口 美丽汤
爬行基地 进口 抓取API

# 使用您的 Crawlbase API 令牌初始化 CrawlingAPI 类
api = 爬行API({'令牌': 'YOUR_CRAWLBASE_JS_TOKEN'})

DEF 获取总页数(搜索网址):
# ...(之前获取总页数的代码)

DEF 刮页(页面地址):
# ...(之前抓取页面的代码)

DEF ():
# 定义搜索查询
搜索查询= 'iPhone'

# 构造第一页的请求URL
搜索网址 = f'https://www.walmart.com/search?q={搜索查询}'

总页数 = get_total_pages(search_url)
所有产品详细信息 = []

in 范围(1, 总页数 + 1):
页面网址 = f'{搜索网址}&页面={页}'
page_product_details = scrape_page(page_url)
all_product_details.extend(page_product_details)

# 将抓取的数据保存为 CSV 文件
df = pd.DataFrame(all_product_details)
df.to_csv(“walmart_product_data.csv”, 索引=)

if __名字__ == “__主要的__”:
主()

在这个更新的脚本中,我们引入了 pandas,一个强大的数据操作和分析库。 在抓取并积累产品详细信息后 all_product_details 列表中,我们根据该数据创建一个 pandas DataFrame。 然后,我们使用 to_csv 方法将 DataFrame 保存到当前目录中名为“walmart_product_data.csv”的 CSV 文件。 环境 index=False 确保我们不会将 DataFrame 的索引保存为 CSV 文件中的单独列。

您可以使用 pandas 轻松处理和分析抓取的数据。 该 CSV 文件可以在各种电子表格软件中打开或导入到其他数据分析工具中以进行进一步探索和可视化。

将抓取的数据存储在 SQLite 数据库中

如果您更喜欢结构化且查询友好的数据存储方法,SQLite 是一种轻量级、无服务器数据库引擎,它可能是一个不错的选择。 您可以创建数据库表来存储抓取的数据,从而实现高效的数据检索和操作。 以下是修改脚本以将数据存储在 SQLite 数据库中的方法:

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
54
55
56
57
58
59
60
61
62
63
64
65
进口 JSON
进口 sqlite3
bs4 进口 美丽汤
爬行基地 进口 抓取API

# 使用您的 Crawlbase API 令牌初始化 CrawlingAPI 类
api = 爬行API({'令牌': 'YOUR_CRAWLBASE_JS_TOKEN'})

DEF create_database():
conn = sqlite3.connect('walmart_products.db')
光标 = conn.cursor()
游标.执行('''如果不存在则创建表产品(
id 整数主键自动增量,
标题文本,
价格文本,
评级文本
)''')
conn.commit()
conn.close()

DEF 保存到数据库(data):
conn = sqlite3.connect('walmart_products.db')
光标 = conn.cursor()

# 根据数据创建元组列表
data_tuples = [(产品['标题'], 产品['价格'], 产品['评分']) 产品展示 in 数据]

# 将数据插入产品表中
光标.executemany('''
插入产品(标题、价格、评级)
值 (?, ?, ?)
''',数据元组)

conn.commit()
conn.close()

DEF 获取总页数(搜索网址):
# ...(不变)

DEF 刮页(页面地址):
# ...(不变)

DEF ():
# 创建数据库和产品表
创建数据库()

# 定义搜索查询
搜索查询= 'iPhone'

# 构造第一页的请求URL
搜索网址 = f'https://www.walmart.com/search?q={搜索查询}'

总页数 = get_total_pages(search_url)
所有产品详细信息 = []

in 范围(1, 总页数 + 1):
页面网址 = f'{搜索网址}&页面={页}'
page_product_details = scrape_page(page_url)
all_product_details.extend(page_product_details)

# 将抓取的数据插入到SQLite数据库中
保存到数据库(所有产品详细信息)

if __名字__ == “__主要的__”:
主()

在此更新的代码中,我们添加了用于创建 SQLite 数据库和表 ( create_database ) 并将抓取的数据保存到数据库 ( save_to_database ) 的函数。 create_database 函数检查数据库和表是否存在,如果不存在则创建它们。 save_to_database 函数将抓取的数据插入到“products”表中。
通过运行此代码,您将把抓取的沃尔玛产品数据存储在名为“walmart_products.db”的 SQLite 数据库中。 您稍后可以使用 SQL 查询检索和操作这些数据,或者在 Python 项目中以编程方式访问它。

6。 结论

在对网络抓取的全面探索中,我们深入研究了利用网络数据的巨大潜力。 网络抓取是从网站提取信息的艺术,已成为企业、研究人员和好奇心不可或缺的工具。 它充当无限扩展的在线数据和特定数据需求之间的桥梁,使用户能够访问、分析和利用以前隐藏在互联网深处的信息。

我们的重点是网络抓取的重要性,主要是应用于沃尔玛这样的零售巨头。 我们揭示了抓取沃尔玛网站如何提供丰富的见解,从竞争情报和市场研究到高效的库存管理和消费者情绪分析。 这个强大的数据中心可以彻底改变各行业的决策。

我们配备了技术知识来建立网络抓取所需的环境。 从设置 Python 和必要的库到获取 Crawlbase Crawling API 令牌,我们奠定了坚实的基础。 我们浏览了沃尔玛复杂的网络结构,磨练了检查 HTML 中 CSS 选择器的技能,这些选择器将成为我们的数据提取工具。

当我们使用 Python 和 Crawlbase Crawling API 构建沃尔玛抓取工具时,实用性与理论相结合。 该动态脚本从沃尔玛的搜索结果页面捕获产品数据,同时熟练地处理分页。 最后,我们了解了数据存储的重要性,提供了如何将抓取的数据保存在 CSV 文件和 SQLite 数据库中的见解,使用户能够有效地管理和分析他们的抓取信息库。

网络抓取不仅仅是一项技术壮举;它也是一项技术成就。 它是当今数据驱动领域中明智决策、创新和市场优势的门户。 有了这些知识,您就可以释放网络抓取的潜力,揭示有价值的数据,这些数据可以重塑您的业务策略或推动您的研究工作。 快乐刮擦!

7。 经常问的问题

问:如何选择从沃尔玛搜索页面抓取的正确数据?

选择正确的数据从沃尔玛的搜索页面中抓取取决于您的具体目标。 常见数据点包括产品标题、价格、评级和链接。 考虑与您的项目最相关的信息,无论是竞争性定价分析、产品研究还是趋势监控。 该博客提供了您可以为各种目的提取的关键数据点的见解。

问:我可以实时抓取沃尔玛的搜索页面以获取价格更新吗?

是的,您可以抓取沃尔玛的搜索页面以监控实时定价更新。 网络抓取允许您跟踪产品价格的变化,这对于价格比较、调整您自己的定价策略或通知您价格下降或上涨非常有价值。 该博客介绍了抓取沃尔玛搜索页面的技术方面,您可以对其进行调整以进行实时监控。

问:抓取沃尔玛的搜索结果时如何处理分页?

在处理多页搜索结果时,处理网络抓取中的分页至关重要。 您可以通过增加 URL 中的页码并发出后续 HTTP 请求来浏览 Walmart 的搜索结果页面。 该脚本可以设计为继续从每个页面抓取数据,直到没有更多页面可供抓取,从而确保您从搜索结果中收集全面的数据。

问:网络抓取中常见的挑战有哪些?

由于以下几个因素,网络抓取可能具有挑战性:

  • 网站结构:网站经常改变其结构,因此有必要调整抓取代码。
  • 防刮措施:网站可能会采用验证码、IP 阻止或会话管理等措施来阻止抓取工具。
  • 数据质量:提取的数据可能包含不一致或错误,需要清理和验证。
  • 道德问题:抓取应符合道德规范,尊重网站条款和隐私法。