You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何抓取登录后JS渲染的非表格div库存数据并按尺寸整理

实现方案

1 加载JS动态渲染页面提取库存数值

普通requests请求只能获取页面初始静态HTML,无法拿到JS执行后生成的动态内容,可选两种实现方案:

方案1:使用无头浏览器渲染页面(兼容性最高)

推荐用Playwright,无需手动配置浏览器驱动,对登录态的兼容也更好。你可以直接复用已有的登录Cookie传入浏览器实例,也可以直接在Playwright中执行登录流程,示例代码如下:

from playwright.sync_api import sync_playwright
import pandas as pd

# 启动浏览器
with sync_playwright() as p:
    # 启动无头模式(不需要显示浏览器窗口)
    browser = p.chromium.launch(headless=True)
    context = browser.new_context()
    # 如果已有登录cookie,可以在这里添加,避免重复登录
    # context.add_cookies(your_login_cookies)
    
    page = context.new_page()
    # 访问库存页面
    page.goto("你的库存页面URL")
    # 等待页面加载完成,等待product-count元素出现
    page.wait_for_selector(".product-count", timeout=10000)
    
    # 提取所有product-count元素,同时关联对应的尺寸、库存地点
    stock_items = []
    # 这里需要根据你实际的页面结构调整选择器,匹配每一个库存条目父节点
    item_blocks = page.locator(".stock-item-block").all()
    for block in item_blocks:
        location = block.locator(".location-name").inner_text().strip()
        size = block.locator(".size-label").inner_text().strip()
        count = int(block.locator(".product-count").inner_text().strip())
        stock_items.append({
            "库存地点": location,
            "尺寸": size,
            "库存数量": count
        })
    browser.close()

方案2:抓后端接口直接取数据(效率最高)

打开浏览器F12开发者工具的「网络」面板,筛选「XHR/获取」选项,刷新页面后查找返回库存数据的接口,直接请求该接口即可拿到结构化的JSON数据,无需解析HTML,效率比无头浏览器高很多。

2 数据排序与表格存储

拿到结构化的库存数据列表后,按以下步骤处理即可得到符合要求的表格:

  • 自定义尺寸排序规则:如果是S/M/L/XL这类非数字尺寸,可以提前写一个映射字典指定排序优先级
  • 排序后用pandas生成表格,可直接导出为CSV、Excel等格式
    示例处理代码:
# 自定义尺寸排序映射,按你实际的尺寸类型调整
size_order = {"S":1, "M":2, "L":3, "XL":4, "XXL":5}
# 给每个条目增加排序权重字段
for item in stock_items:
    item["sort_weight"] = size_order.get(item["尺寸"], 999)
# 按尺寸排序,也可以再加库存地点作为第二排序条件
stock_items_sorted = sorted(stock_items, key=lambda x: (x["sort_weight"], x["库存地点"]))
# 转成DataFrame,去掉排序用的辅助字段
df = pd.DataFrame(stock_items_sorted).drop(columns=["sort_weight"])
# 可以按需求转成透视表,行是库存地点、列是尺寸,值是库存数量
pivot_df = df.pivot(index="库存地点", columns="尺寸", values="库存数量").fillna(0)
# 导出为Excel
pivot_df.to_excel("库存统计.xlsx")
# 也可以直接导出为CSV
df.to_csv("库存统计.csv", index=False, encoding="utf-8-sig")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:24:03