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

网页数据解析问题:如何为无对应dd的dt项保留空值?

解决dt/dd不匹配的解析问题

没问题,这事儿好办!针对你遇到的部分dt没有对应dd的情况,我们可以用Python的BeautifulSoup库来精准处理,确保每个dt都能对应到值(没有的话就留空)。

核心思路

遍历所有的dt标签,对每个dt,专门查找它紧随其后的dd标签——如果找到就提取文本,找不到就赋值为空字符串,最后把名称和对应值整理成字典方便使用。

完整代码示例

from bs4 import BeautifulSoup

# 你的待解析内容
content = """ <div class="movie_middle"> <dl> <dt>Genres:</dt> <dd>Action, Adventure</dd> <dt>Resolution:</dt> <dt>Release Date:</dt> <dd>2023-10-01</dd> <dt>Director:</dt> </dl> </div>"""

# 解析HTML
soup = BeautifulSoup(content, 'html.parser')
dl_tag = soup.find('dl')

# 存储结果的字典
result = {}

# 遍历所有dt标签
for dt in dl_tag.find_all('dt'):
    # 获取当前dt的文本(去掉多余空格,可选去除末尾冒号)
    name = dt.get_text(strip=True).rstrip(':')
    # 查找当前dt后面紧邻的第一个dd标签
    dd = dt.find_next_sibling('dd')
    # 如果找到dd就取文本,否则留空
    value = dd.get_text(strip=True) if dd else ''
    result[name] = value

print(result)

代码细节说明

  • dt.find_next_sibling('dd'):这个方法会精准跳过dt后面的换行、空格等无效节点,直接定位第一个dd标签,避免误判。
  • rstrip(':'):可选操作,把dt文本末尾的冒号去掉,让字典的key更整洁(比如把"Genres:"变成"Genres")。
  • 最终输出的字典里,每个dt对应的key都会有值,没有对应dd的就会是''(空字符串)。

比如上面示例代码的输出会是:

{'Genres': 'Action, Adventure', 'Resolution': '', 'Release Date': '2023-10-01', 'Director': ''}

这样就完美解决了你要保留空值的需求啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:00:21