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

如何从类名相同的HTML块中提取图书出版年份字段值?

解决方案

核心思路是遍历所有图书信息块,匹配出版年份对应的标题后再取值,修改get_content函数逻辑即可:

修改后的代码

def get_content(html):
    years = []
    soup = BeautifulSoup(html, "html.parser")
    # 先拿到左侧详情容器
    details_container = soup.find("div", class_="book__details-left")
    # 获取所有信息条目块,注意这里用find_all而不是find
    detail_items = details_container.find_all("dl", class_="book__details-item")
    for item in detail_items:
        # 提取当前条目的名称,strip去掉首尾空白符避免空格导致匹配失败
        item_name = item.find("dt", class_="book__details-name").get_text(strip=True)
        # 匹配出版年份的标题
        if item_name == "Год издания:":
            # 提取对应值
            item_value = item.find("dt", class_="book__details-value").get_text(strip=True)
            years.append(item_value)
            # 匹配到后可以break跳出循环,避免不必要的遍历
            break
    # 原来的代码没有返回值,这里补充返回结果给上层调用
    return years

原有代码的问题说明

  • 错误使用find方法,仅能匹配到第一个book__details-item块(对应出版地点信息),无法命中后续的出版年份块
  • 没有做标题匹配逻辑,无法定位到出版年份对应的条目
  • 函数没有返回值,上层parse函数无法拿到采集结果

注:你提供的HTML片段末尾有一段未被dl标签包裹的重复出版年份节点,属于不规范的HTML结构,正常上线的站点不会出现这类问题,如果实际采集时遇到这种情况,可以额外对容器下直接挂的dt标签做补充遍历匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:24:00