You need to enable JavaScript to run this app. 如何使用Python网络爬虫获取电商产品名称、SKU、价格及库存信息
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python网络爬虫获取电商产品名称、SKU、价格及库存信息

电商静态内嵌JSON数据抓取的实现思路(Python新手友好版)

前置准备:安装所需依赖

整个流程不需要复杂的爬虫框架,用轻量库就能实现,先通过pip安装需要的工具:

pip install requests beautifulsoup4 pandas openpyxl

各库的作用:

  • requests:发送HTTP请求获取目标页面的HTML源码
  • beautifulsoup4:从整页HTML里精准定位内嵌的JSON数据标签
  • Python自带json库:把字符串格式的JSON转换成可读取的结构化字典
  • pandas:把整理好的结构化数据一键导出为Excel文件,无需手动操作表格逻辑

核心实现逻辑(适配两个URL的采集需求)

因为两个目标URL的页面结构一致,只需要写一次通用处理函数,传入不同URL调用两次即可,不用重复写代码:

  1. 请求页面时添加基础请求头,伪装成普通浏览器访问,降低被网站拦截的概率
  2. 拿到HTML源码后,定位藏有产品数据的JSON标签——这类静态内嵌的产品结构化数据,一般存在于带type="application/ld+json"的script标签,或是带data-*属性的自定义节点中
  3. 将定位到的JSON字符串解析为字典结构,顺着层级提取需要的四个字段:产品名称、SKU编号、价格、库存状态
  4. 将提取到的单条产品数据整理为二维结构,调用pandas的导出方法,分别为两个URL的结果生成独立的Excel文件

可直接修改使用的参考代码框架

代码中的标签选择器、JSON字段路径为示例占位,需要你根据自己实际看到的页面结构调整,不要直接硬跑

import requests
from bs4 import BeautifulSoup
import json
import pandas as pd

# 通用抓取函数:传入目标商品页URL,返回提取完成的产品信息
def get_product_info(target_url):
    # 基础请求头,避免请求被拦截
    request_headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    }
    # 发起请求获取页面源码,请求失败时直接抛出错误方便排查
    page_resp = requests.get(target_url, headers=request_headers, timeout=10)
    page_resp.raise_for_status()
    page_soup = BeautifulSoup(page_resp.text, "html.parser")

    # 定位内嵌的产品JSON标签,此处的选择器需要根据实际页面调整
    json_node = page_soup.find("script", {"type": "application/ld+json"})
    # 解析JSON字符串为字典
    product_raw = json.loads(json_node.string)

    # 提取目标字段,字段层级路径需要根据实际JSON结构调整
    extracted_data = {
        "产品名称": product_raw.get("name", "未匹配到对应数据"),
        "SKU编号": product_raw.get("sku", "未匹配到对应数据"),
        "价格": product_raw.get("offers", {}).get("price", "未匹配到对应数据"),
        "库存状态": product_raw.get("offers", {}).get("availability", "未匹配到对应数据")
    }
    return extracted_data

# 分别处理两个目标URL,生成独立Excel
target_url_1 = "第一个商品页的实际URL"
target_url_2 = "第二个商品页的实际URL"

# 处理第一个URL
info1 = get_product_info(target_url_1)
df1 = pd.DataFrame([info1])
df1.to_excel("第一个商品采集结果.xlsx", index=False)

# 处理第二个URL
info2 = get_product_info(target_url_2)
df2 = pd.DataFrame([info2])
df2.to_excel("第二个商品采集结果.xlsx", index=False)

实操注意事项

  • 不要直接套用示例里的标签选择器和字段路径,先在浏览器打开目标页面,按Ctrl+U查看源码,搜索已知的SKU、价格关键词定位到JSON的实际位置,比盲目猜测效率高很多
  • 导出Excel时一定要加index=False参数,否则生成的文件会多出一列无关的行号
  • 如果遇到JSON解析报错,先把抓到的字符串打印出来检查,一般是存在多余的转义字符,用Python自带的字符串处理去掉多余斜杠即可正常解析,不需要额外安装转码工具

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 09:15:05