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

Python使用BeautifulSoup爬取网页时定位到的div返回空内容问题求助

问题核心原因

耐克商品页的buyTools区块(包含尺码选择、库存等信息)是客户端JavaScript动态渲染生成的,你用requests发起请求拿到的原始HTML源码中,对应的<div class="pr16-sm pr10-lg">本身就是空节点,内容是浏览器加载页面后执行JS才填充的,所以直接用BeautifulSoup解析静态HTML无法获取目标内容。

先修正你现有代码的语法错误

你当前的代码存在几处基础语法问题,需要先调整:

  • 函数定义关键字拼写错误,dev改为def
  • 异常捕获关键字拼写错误,excpet改为except
  • 调用make_soup时传入的URL没有加字符串引号
  • 没有导入requests、BeautifulSoup依赖包

可行的解决方案

方案1:使用模拟浏览器工具获取渲染后的DOM

用支持JS渲染的工具(如Selenium、Playwright)启动浏览器访问页面,等页面渲染完成后再提取内容,示例逻辑如下(以Selenium为例):

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
url = "https://www.nike.com/de/t/air-jordan-1-low-se-damenschuh-RxZs2k/DO0750-002"
driver.get(url)
# 等待目标fieldset加载完成
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "form#buyTools fieldset"))
)
# 直接提取目标内容
target_div = driver.find_element(By.CSS_SELECTOR, "form#buyTools div.mt2-sm.css-12whm6")
print(target_div.text)
driver.quit()

方案2:直接调用后端数据接口

打开浏览器开发者工具的「网络」面板,筛选「Fetch/XHR」请求,刷新页面后找到返回商品尺码、库存信息的后端接口,直接请求该接口解析JSON即可,这种方式比爬页面效率更高、稳定性更好。

内容的提问来源于stack exchange,提问作者jw-de

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:27:03