如何用BeautifulSoup提取网页script标签内的尺码数据
实现方案
目标数据存储在<script>标签内的JavaScript变量中,BeautifulSoup仅能解析HTML结构,无法直接提取JS变量内的字段,需要结合正则和JSON解析实现,完整代码如下:
import requests from bs4 import BeautifulSoup import json import re # 页面请求 url = "https://www.nike.com.br/air-max-pre-day-153-169-211-330676" resp = requests.get(url) soup = BeautifulSoup(resp.text, "html.parser") # 定位包含目标数据的script标签 target_script = "" for script in soup.find_all("script"): # 过滤出包含SKU变量的script内容 if script.string and "var SKUsCorTamanho" in script.string: target_script = script.string break # 正则提取JSON字符串部分 json_content = re.search(r"var SKUsCorTamanho = (\{.*\});", target_script).group(1) # 转换为Python字典 sku_data = json.loads(json_content) # 提取所有尺码 size_list = [item["Tamanho"] for item in sku_data.values()] for size in size_list: # 输出格式可自行调整,以下两种二选一即可 print(f"Tamanho {size}") # print(size)
步骤说明
- 第一步先遍历所有
script标签,筛选出包含SKUsCorTamanho变量的内容 - 第二步用正则剔除JS变量声明的冗余内容,仅保留纯JSON字符串
- 第三步用JSON库将字符串转为Python字典,直接提取
Tamanho字段即可 - 如果只需要单个尺码,取
size_list的对应下标值即可
注意:你提供的基础代码存在笔误,
request.get需要导入requests库后调用requests.get,否则会报错。
内容的提问来源于stack exchange,提问作者user15594988
相关产品推荐
相关产品推荐

