You need to enable JavaScript to run this app. Python版Selenium如何提取指定div标签data-userassetid属性引号内数值
优惠活动
大模型
产品
解决方案
定价
更多

Python版Selenium如何提取指定div标签data-userassetid属性引号内数值

基于Python Selenium提取自定义data属性值的实现方案

核心通用逻辑

所有元素的属性值提取,都无需手动爬取页面源码写正则拆分,定位到目标DOM元素后,直接调用元素对象的get_attribute()方法,传入目标属性名,即可拿到引号包裹的真实值。
该方法可覆盖所有同类属性提取场景,后续遇到其他data-开头的自定义属性提取需求,仅需修改get_attribute()传入的属性名即可,无需调整整体逻辑。

对应示例场景的可运行代码

目标示例元素为:<div class = "item-card-container" data-userassetid = "50904623348">

单个元素提取

当页面仅存在1个匹配class的目标元素时,直接定位取值即可:

from selenium import webdriver
from selenium.webdriver.common.by import By

# 浏览器驱动初始化、跳转目标页面的常规流程
driver = webdriver.Chrome()
driver.get("待爬取的目标页面地址")

# 用CSS选择器定位元素,传入属性名提取值
target_card = driver.find_element(By.CSS_SELECTOR, "div.item-card-container")
user_asset_id = target_card.get_attribute("data-userassetid")

# 打印结果,对应示例将输出 50904623348
print(user_asset_id)

多元素批量提取

当页面存在多个同类型的卡片元素、需要提取所有对应属性值时,使用复数定位方法遍历取值:

asset_id_list = []
# 定位页面所有匹配的卡片元素
all_cards = driver.find_elements(By.CSS_SELECTOR, "div.item-card-container")
for card in all_cards:
    asset_id = card.get_attribute("data-userassetid")
    asset_id_list.append(asset_id)

print(asset_id_list)

稳定性优化注意点

  • 如果目标元素是前端异步渲染加载的,直接定位会抛出元素不存在的异常,需要搭配显式等待,等元素加载完成后再执行取值操作,对应示例代码:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 最长等待10秒,等目标元素加载完成
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, "div.item-card-container"))
)
  • 相较于手动匹配页面源码的方式,这种方法拿到的是浏览器渲染后的真实DOM属性值,不会被前端动态替换属性值、异步加载内容的逻辑影响,适配性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 22:36:03