如何使用 Python 抓取 Shopify 商店
在本文中,我将向您介绍如何使用 Python 对 Shopify 商店进行刮擦。无论您是开发人员、营销人员还是研究人员,本指南都将告诉您如何设置一切并开始毫不费力地收集数据。让我们开始吧
什么是 Shopify?
Shopify 是一个允许企业创建在线商店的电子商务平台。它为店主提供管理库存、处理付款和物流的各种工具。每个 Shopify 商店都建立在一个模板上,重点是为店主和客户提供一个易于使用的界面。
Shopify的主要功能之一是使用JSON文件存储产品数据。这些文件包含商店中产品的所有必要信息,包括标题、描述、价格、图片和变体。
为什么要抓取 Shopify 商店?
扫描 Shopify 商店可用于多种目的,例如
- 产品研究:收集产品数据,包括定价、可用性和功能。
- 竞争对手分析:监测竞争对手商店的价格变动或新产品上市情况。
- 数据收集:为研究或分析目的收集大型数据集。
好消息是,Shopify 使访问 JSON 格式的产品数据变得相对容易,从而简化了搜索过程。无需处理复杂的 HTML 解析,您可以直接访问结构化格式的产品数据。
🛡️ 使用 Bright Data Proxies 进行可靠的 Shopify 搜索
在搜索多个 Shopify 商店或处理大型产品目录时,您的 IP 可能会受到速率限制或屏蔽。为避免这种情况,请考虑使用 布赖特数据公司的住宅 或数据中心代理。它们可以帮助你轮换 IP、绕过地理限制并保持稳定的访问--在大规模或跨地区刮擦时尤其有用。
对其他供应商感兴趣?查看我的 最佳代理供应商!
注:我与这些供应商均无关联。
设置环境
在开始编写刮擦代码之前,我们需要设置环境。第一步是确保我们安装了必要的 Python 库。
步骤 1:安装 Python 请求
请求库是我们用来向 Shopify 商店的 API 端点发送 HTTP 请求并获取 JSON 数据的主要工具。要安装它,请在终端运行以下命令:
pip install requests
第 2 步:安装 JSON 库(可选)
Python 自带 JSON 库,因此无需单独安装。通过该库,您可以轻松地解析和处理 JSON 数据。
import json
现在我们的环境已经搭建完毕,可以开始编写刮擦脚本了。
从 Shopify 中抓取数据
了解Shopify的JSON结构
Shopify 商店通过 /products.json 端点提供产品数据。该 JSON 端点包含所有产品详细信息,包括
- 标题:产品名称。
- 身份证:产品的唯一标识符。
- 变体:产品的不同变化,如尺寸或颜色。
- 图片:产品图片。
- Options:产品选项,如尺寸或颜色。
例如,一个简单的 API 响应可能如下所示:
{
"产品":[
{
"id":123456789,
"标题":"产品 1"、
"变体":[
{
"id":987654321,
"标题":"小"、
"价格":"19.99"
}
],
"图像":[
{
"src":"https://example.com/image.jpg"
}
]
}
]
}
扫描脚本
让我们从从 Shopify 商店中抓取产品数据的基本功能开始。
import requests
import json
def scrape_shopify(url):
""从 Shopify 商店抓取产品数据"""
json_url = f"{url}products.json" # 在商店的基本 URL 中添加"/products.json
products = [] # 此处将存储废品
try:
response = requests.get(json_url)
response.raise_for_status() # 如果请求失败则引发错误
data = response.json() # 将响应转换为 JSON 格式
for product in 数据["产品"]: # 迭代每个产品
产品信息 = {
"title"产品"title"],
"id"产品"id"],
"变体"产品"变体"],
"图像"产品"图像"],
"选项"产品"选项"]
}
products.append(product_info) # 将产品信息添加到我们的列表
except requests.RequestException as e:
print(f "错误: {e}")
except json.JSONDecodeError:
print("解析 JSON 响应时出错"。)
return products
守则解释
- 我们首先要定义函数 scrape_shopify(),它获取 Shopify 商店的基本 URL。
- 我们将 /products.json 添加到基本 URL 中,从而构建 JSON URL。
- 我们使用 requests.get() 方法向 Shopify 商店发送 HTTP 请求。
- 如果请求成功,响应将转换为 JSON 格式。
- 然后,我们遍历 JSON 响应中的每个产品,提取关键细节,如产品标题、ID、变体、图片和选项。
- 我们将每个产品的信息存储在一个名为产品的列表中,函数最终将返回该列表。
将数据保存到文件中
数据采集完成后,我们需要将其存储起来以备后用。由于我们要处理的是嵌套数据(变体、图像等),因此最好将其保存为 JSON 文件,而不是 CSV 文件。
下面介绍如何将刮擦数据写入文件:
def save_too_json(数据,文件名):
""将搜刮到的数据保存为 JSON 文件"""
try:
with open(文件名: "w", encoding="utf-8") as f:
json.dump(data, f, indent=4)
print(f "数据保存到 {文件名}")
except Exception as e:
print(f "保存文件出错: {e}")
将所有内容整合在一起
现在,让我们在主代码块中汇集所有内容,运行刮板并保存数据。
if __name__ == "__main__":
shop_url = "https://example-store.com/" # 替换为目标 Shopify 商店 URL
产品 = scrape_shopify(shop_url) # 搜索商店
save_to_json(products、 "products.json") # 将搜刮到的数据保存到文件中
该脚本将从给定的 URL 抓取 Shopify 商店,检索所有产品数据,并将其保存到名为 products.json 的文件中。
Shopify 搜索的高级技术
处理分页
许多 Shopify 商店都有大量产品,分布在多个页面上。要抓取所有产品,我们需要处理分页问题。幸运的是,Shopify 的应用程序接口支持分页,这使我们可以从多个页面中抓取数据。
要处理分页,我们只需在 URL 中添加一个页面参数。例如
json_url = f"{url}products.json?page={页码}"
我们可以修改刮擦功能,以刮擦多个页面:
def scrape_shopify(url,总页数):
all_products = []
for page in range(1, 总页数 1):
json_url = f"{url}products.json?page={页}"
产品 = requests.get(json_url).json()["产品"]
for product in 产品:
product_info = {
"title"产品"title"],
"id"产品"id"],
"变体"产品"变体"],
"图像"产品"图像"],
"选项"产品"选项"]
}
all_products.append(product_info)
return 所有产品
使用代理
有时,如果快速发送的请求过多,网站会阻止来自同一 IP 地址的请求。要避免这种情况,可以使用代理。下面介绍如何将代理服务器集成到请求中:
proxies = {
"http": "http://username:[email protected]",
"https": "http://username:[email protected]"
}
response = requests.get(json_url, proxies=proxies)
结论
借助 Shopify JSON API,使用 Python 对 Shopify 商店进行抓取非常简单。在商店的 URL 中添加/products.json,就可以轻松访问结构化的产品数据,而无需进行复杂的 HTML 解析。只需几行 Python 代码,您就能收集到产品变体、图片和价格等详细信息,并将其存储起来以供分析。如果要搜刮较大型的商店,您可以使用处理分页和集成代理等技术,以便更顺利地进行搜刮。请务必遵守商店的服务条款,以负责任的态度进行搜刮。