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

使用Selenium Python爬取Shopee数据时无法获取销量内容求助

解决Shopee月售数据抓取返回空的问题

问题根源

你的CSS选择器语法错误,且未考虑页面动态加载特性,导致无法定位到目标元素。

修复步骤

1. 修正CSS选择器

原选择器 div.r6HknA+uEPGHT 不符合语法规范:+ 作为相邻兄弟选择器,后面必须跟完整的元素选择器。正确写法应为:

# 定位class为r6HknA的div的相邻兄弟div(class为uEPGHT)
sales_elements = driver.find_elements(By.CSS_SELECTOR, "div.r6HknA + div.uEPGHT")

如果 uEPGHT 是月售元素独有的class,也可直接简化为:

sales_elements = driver.find_elements(By.CSS_SELECTOR, "div.uEPGHT")

2. 等待元素动态加载

Shopee页面采用动态渲染,直接调用查找方法时元素可能未加载完成,需添加显式等待:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 最长等待10秒,直到所有目标元素出现
wait = WebDriverWait(driver, 10)
sales_elements = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "div.r6HknA + div.uEPGHT")))

# 遍历输出元素文本
for elem in sales_elements:
    print(elem.text)

3. 检查iframe嵌套情况

若目标元素嵌套在iframe中,需先切换到iframe再执行查找:

# 定位目标iframe(需根据实际页面结构调整选择器)
iframe = driver.find_element(By.CSS_SELECTOR, "iframe[src*='search']")
driver.switch_to.frame(iframe)

# 执行元素查找操作(同上述步骤)
sales_elements = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "div.r6HknA + div.uEPGHT")))

# 操作完成后切回主文档
driver.switch_to.default_content()

4. 验证元素class有效性

Shopee的元素class可能会动态更新,建议重新通过浏览器开发者工具(F12)定位目标元素,确认最新的class属性及DOM结构,避免因class失效导致定位失败。

内容的提问来源于stack exchange,提问作者Luận Đặng Văn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:40:15