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

使用BeautifulSoup提取<small>标签文本时循环返回空作者列表怎么办?

问题解决方法

核心问题原因

  • 你的quote_text变量选取的节点范围错误:如果quote_text是所有class="text"的<span>元素集合,那么这类节点内部仅包含名言文本,包含作者的<small>标签和它是同级节点,不属于它的子节点,所以在循环内调用i.find()查找不到对应标签,自然无法给author赋值。
  • 你单独执行全局soup.find()能拿到结果,是因为全局查找的范围是整个HTML文档,和循环内限定在单个<span class="text">节点下的查找范围完全不同。

修正方案

步骤1:调整节点选取范围

直接选中所有包裹单条完整名言的<div class="quote">节点,而不是仅选中名言文本节点:

# 替换你之前定义quote_text的代码
quote_text = soup.find_all('div', class_='quote')

步骤2:优化循环取值逻辑(避免空值报错)

修正后的完整代码如下:

authors = []
quotes = []

quote_text = soup.find_all('div', class_='quote')

for item in quote_text:
    # 提取名言内容
    quote_ele = item.find('span', class_='text')
    if quote_ele:
        quotes.append(quote_ele.text.strip())
    # 提取作者
    author_ele = item.find('small', class_='author')
    if author_ele:
        authors.append(author_ele.text.strip())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:45:03