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

如何使用Python bs4查找嵌套div内a标签并提取acckey值

BeautifulSoup嵌套div查找提取acckey属性实现方案

核心逻辑

按照HTML嵌套层级匹配目标标签即可,支持逐层find定位,也支持CSS选择器一步匹配,两种方式都可以稳定拿到目标属性值。

前置准备

确保已经安装beautifulsoup4,未安装的话先执行安装命令:
pip install beautifulsoup4

完整实现代码

方式一:逐层定位(兼容性好,逻辑清晰)

按照外层div→中层result_digital div→目标a标签的顺序逐层查找,适合需要对每一层做判断的场景:

from bs4 import BeautifulSoup

# 替换成你实际爬取到的HTML源码
html = """
<div class="data_record">
    <div class="result_select"></div>
    <div class="result_level"></div>
    <div class="result_digital">
        <a class="act_content_display" acckey="69c19f8552dfdccb526f4728cf4e5cb6" title="檢視詳目頁">
            <span class="material-icons">picture_as_pdf</span>
        </a>
    </div>
</div>
"""

soup = BeautifulSoup(html, "html.parser")

# 逐层查找
outer_div = soup.find("div", class_="data_record")
digital_div = outer_div.find("div", class_="result_digital")
target_tag = digital_div.find("a", class_="act_content_display")

# 提取acckey属性,用get方法在标签不存在时不会抛出异常
acckey = target_tag.get("acckey")
print(acckey)
# 输出结果:69c19f8552dfdccb526f4728cf4e5cb6

方式二:CSS选择器一步匹配(代码简洁)

确认选择器唯一的前提下,可以直接用select_one方法一步定位目标标签,代码更精简:

from bs4 import BeautifulSoup

html = """
<div class="data_record">
    <div class="result_select"></div>
    <div class="result_level"></div>
    <div class="result_digital">
        <a class="act_content_display" acckey="69c19f8552dfdccb526f4728cf4e5cb6" title="檢視詳目頁">
            <span class="material-icons">picture_as_pdf</span>
        </a>
    </div>
</div>
"""

soup = BeautifulSoup(html, "html.parser")
# 选择器语义:匹配class为data_record的div下,class为result_digital的div内部,class为act_content_display的a标签
target_tag = soup.select_one("div.data_record div.result_digital a.act_content_display")
acckey = target_tag["acckey"]
print(acckey)
# 输出结果:69c19f8552dfdccb526f4728cf4e5cb6

批量提取场景说明

如果页面存在多个class为data_record的列表块,遍历所有外层块再逐个提取即可:

# 遍历所有data_record块
for outer_div in soup.find_all("div", class_="data_record"):
    digital_div = outer_div.find("div", class_="result_digital")
    # 跳过没有result_digital块的异常条目
    if not digital_div:
        continue
    target_tag = digital_div.find("a", class_="act_content_display")
    if target_tag:
        acckey = target_tag.get("acckey")
        print(acckey)

注意点

  • 取属性优先用tag.get("属性名")的写法,目标标签不存在或者属性不存在时会返回None,不会直接抛出KeyError中断程序
  • 没有安装lxml解析器的话,直接用Python内置的html.parser即可满足解析需求,不需要额外安装依赖
  • 用CSS选择器时如果有多个匹配结果,select_one只会返回第一个匹配的标签,需要全部结果的话换成select()方法拿到列表再遍历即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:27:34