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

如何用Selenium/BeautifulSoup获取带data-v属性的div内容?

如何用Selenium或BeautifulSoup获取指定div的文本值

目标HTML代码:

<div data-v-afa58544="" class="pa-0 col col-4">
          0.51
        </div>

需要获取其中的0.51,以下是两种工具的实现方案:

BeautifulSoup 解决方案

你的原有代码存在两处问题:

  1. soup.find('div[data-v-afa58544]') 是CSS选择器语法,但find方法不支持直接传入这种格式,需改用select_one或通过attrs参数指定属性。
  2. 后续的select_one('.pa-0 col col-4')写法错误,类选择器需给每个类名前加.,且目标值就在当前div内,无需再选择子元素。

正确实现代码:

from bs4 import BeautifulSoup

# 假设html为你获取到的页面源码
html = '''<div data-v-afa58544="" class="pa-0 col col-4">
          0.51
        </div>'''
soup = BeautifulSoup(html, 'html.parser')

# 方式1:通过attrs参数定位元素
target_div = soup.find('div', attrs={'data-v-afa58544': ''})
# 方式2:用CSS选择器定位
target_div = soup.select_one('div[data-v-afa58544=""]')

# 获取文本并去除前后空格
result = target_div.get_text(strip=True)
print(result)  # 输出:0.51

Selenium 解决方案

如果页面是Vue等框架动态渲染的,静态解析可能拿不到元素,这时用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()
driver.get('你的目标网站URL')

# 等待元素加载完成(避免动态渲染导致找不到元素)
wait = WebDriverWait(driver, 10)
target_div = wait.until(EC.presence_of_element_located(
    (By.CSS_SELECTOR, 'div[data-v-afa58544=""]')
))

# 获取文本并处理
result = target_div.text.strip()
print(result)  # 输出:0.51

driver.quit()

也可以用XPATH定位:

target_div = wait.until(EC.presence_of_element_located(
    (By.XPATH, '//div[@data-v-afa58544=""]')
))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:00:57