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

如何用Selenium和Python单独提取div内的每个元素?

网页元素提取方案

核心思路

目标数据都包裹在div.message-userExtras容器内,每个dl.pairs.pairs--justified是一组键值对(<dt>为键,<dd>为值),无需唯一ID,通过遍历分组标签即可提取所有信息。

实现方式1:使用Python BeautifulSoup

from bs4 import BeautifulSoup

html = '''
<div class="message-userExtras">
            
    <dl class="pairs pairs--justified">
    <dt>Joined</dt>
    <dd>Feb 23, 2023</dd>
    </dl>


    <dl class="pairs pairs--justified">
    <dt>Messages</dt>
    <dd>22</dd>
    </dl>

    <dl class="pairs pairs--justified">
    <dt>Reaction score</dt>
    <dd>
    <a href="/members/297754/reactions-info" class="link">18</a>
    </dd>
    </dl>
                    
                                        
    <dl class="pairs pairs--justified">
    <dt>Escrow deals</dt>
    <dd>3</dd>
    </dl>
                    

    <dl class="pairs pairs--justified">
    <dt>Deposit</dt>
    <dd><a class="deposit-button" href="/members/297754/deposit" data-xf-click="overlay">0.1 <i class="fa--xf fab fa-btc deposit-fa-icon" aria-hidden="true"></i></a></dd>
    </dl>

</div>
'''

soup = BeautifulSoup(html, 'html.parser')
user_extras = soup.find('div', class_='message-userExtras')
result = {}

for dl in user_extras.find_all('dl', class_='pairs pairs--justified'):
    # 提取键并转为小写
    key = dl.find('dt').get_text(strip=True).lower()
    # 提取值,处理Deposit中的图标文本,只保留有效内容
    value = dl.find('dd').get_text(strip=True).split()[0]
    result[key] = [value]

print(result)

执行后输出:

{'joined': ['Feb 23, 2023'], 'messages': ['22'], 'reaction score': ['18'], 'escrow deals': ['3'], 'deposit': ['0.1']}

实现方式2:使用XPath(lxml/Scrapy)

from lxml import etree

html = '''
<div class="message-userExtras">
            
    <dl class="pairs pairs--justified">
    <dt>Joined</dt>
    <dd>Feb 23, 2023</dd>
    </dl>


    <dl class="pairs pairs--justified">
    <dt>Messages</dt>
    <dd>22</dd>
    </dl>

    <dl class="pairs pairs--justified">
    <dt>Reaction score</dt>
    <dd>
    <a href="/members/297754/reactions-info" class="link">18</a>
    </dd>
    </dl>
                    
                                        
    <dl class="pairs pairs--justified">
    <dt>Escrow deals</dt>
    <dd>3</dd>
    </dl>
                    

    <dl class="pairs pairs--justified">
    <dt>Deposit</dt>
    <dd><a class="deposit-button" href="/members/297754/deposit" data-xf-click="overlay">0.1 <i class="fa--xf fab fa-btc deposit-fa-icon" aria-hidden="true"></i></a></dd>
    </dl>

</div>
'''

tree = etree.HTML(html)
dl_list = tree.xpath('//div[@class="message-userExtras"]/dl[@class="pairs pairs--justified"]')
result = {}

for dl in dl_list:
    key = dl.xpath('./dt/text()')[0].strip().lower()
    # 提取dd下所有文本并处理
    value_text = ' '.join(dl.xpath('./dd//text()')).strip()
    value = value_text.split()[0]
    result[key] = [value]

print(result)

执行后输出与上面一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:15:38