如何使用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调用两次即可,不用重复写代码:
- 请求页面时添加基础请求头,伪装成普通浏览器访问,降低被网站拦截的概率
- 拿到HTML源码后,定位藏有产品数据的JSON标签——这类静态内嵌的产品结构化数据,一般存在于带
type="application/ld+json"的script标签,或是带data-*属性的自定义节点中 - 将定位到的JSON字符串解析为字典结构,顺着层级提取需要的四个字段:产品名称、SKU编号、价格、库存状态
- 将提取到的单条产品数据整理为二维结构,调用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
相关产品推荐
相关产品推荐

