Webscraping耐克运动鞋尺码库存 解决Nike页面爬虫空输出问题
Nike商品库存抓取问题排查
空输出成因
- 动态渲染问题:Nike的商品页所有库存、SKU相关数据都是JS异步加载后渲染的,你用requests直接拉的只是个空的HTML壳,里面根本没有你要找的那个input标签,soup.find自然返回None,你直接取['input']要么报错要么拿不到内容。
- 反爬拦截:你裸用requests发请求,没有带User-Agent之类的浏览器头,Nike直接给你返回反爬验证页,根本不是正常的商品页,当然找不到元素。
- 硬编码逻辑错误:你写死的value值
25634224:11是跟SKU绑定的动态值,就算页面是静态的,换个商品或者Nike前端改个配置就匹配不到了,这个写法本身就不稳定。
需求可行性
完全可以实现,不用费劲爬前端DOM,Nike有公开的库存查询接口,直接调接口拿数据比解析页面稳得多也快得多。
推荐实现方案
- 优先调官方接口:你要查的是意大利站的
CW2288-111这个SKU,构造请求的时候带上country=IT、language=it的参数,再加个正常的浏览器请求头,直接调Nike的库存接口就能拿到全尺码的库存数据,不用解析页面。 - 一定要爬前端的话,就用Selenium或者Playwright这类自动化工具,模拟浏览器打开页面等个几秒等内容加载完再找元素,还要记得改请求头、加代理规避反爬,不然很容易被封。
原代码可修复点
你现有的代码就算解决了反爬问题也拿不到动态数据,基础逻辑有问题,修正后的可运行版本如下(仅解决请求和异常问题,依然拿不到动态渲染的元素,需要配合自动化工具使用):
from bs4 import BeautifulSoup import requests url = 'https://www.nike.com/it/t/scarpa-air-force-1-07-lKPQ6q/CW2288-111' # 模拟浏览器请求头,避免被反爬直接拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", "Accept-Language": "it-IT,it;q=0.9,en;q=0.8" } resp = requests.get(url, headers=headers) soup = BeautifulSoup(resp.content, 'html.parser') input_tag = soup.find(attrs={"value": "25634224:11"}) # 先判空再取值,避免直接抛出异常 if input_tag: output = input_tag.get('input', '') print(output) else: print("未匹配到目标元素")
内容的提问来源于stack exchange,提问作者outshined
相关产品推荐
相关产品推荐

