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

使用BeautifulSoup从指定id元素内提取ul的li标签返回None如何解决?

问题排查&解决方法

1 输出None的核心原因

你拿到None和要不要单独定义变量获取<ul class="qtyBreakUl">没有关联,根本问题是requests.get()只能拉取网站的静态原始HTML,你要提取的价格分段模块是JavaScript动态渲染生成的,静态源码里不存在对应id的元素或是内部的ul标签,自然查找不到结果。

2 验证方法

你可以手动在浏览器打开目标页面,按Ctrl+U查看页面源代码,直接搜索tdPriceBreak_DECMSB24-1824,搜不到对应内容就说明静态源码里确实没有该元素。

3 解决方案

  • 方案一:用支持JS渲染的爬虫工具替换requests,比如selenium、playwright,模拟浏览器加载页面等待JS渲染完成后再提取元素,参考代码:
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()
driver.get('https://www.gogsg.com/2316358/Product/Wrisco_DECMSB24-1824')
# 等待目标元素加载完成
wait = WebDriverWait(driver, 10)
test = wait.until(EC.presence_of_element_located((By.ID, 'tdPriceBreak_DECMSB24-1824')))
test1 = test.find_element(By.TAG_NAME, 'ul')
print(test1.text)
driver.quit()
  • 方案二:抓取网站后端接口拿数据,效率比渲染页面更高。你可以打开浏览器F12控制台,切换到「网络」标签,刷新页面筛选XHR/fetch请求,就能找到对应价格分段数据的接口。

4 关于ul元素提取的说明

如果后续拿到的渲染后源码里确实存在对应ul,不需要单独定义变量获取,可以直接链式查找,也可以指定class定位更精准:

test1 = test.find('ul', class_='qtyBreakUl')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:45:03