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

解决AttributeError并提取HTML中itemprop="brand"对应文本Hyundai的方法

问题解决:正确提取Hyundai文本

错误原因

你代码里的 soup.find(itemprop_="brand") 参数名写错了——BeautifulSoup 的 find 方法匹配属性时,不需要给属性名加下划线,应该直接写 itemprop="brand"。错误的写法导致找不到目标元素,返回了 None,所以调用 next_elements 会触发 AttributeError。

正确提取方法

以下是几种可靠的提取方式,都加入了空值判断避免报错:

方法1:定位父元素后获取子a标签文本

def get_car_datas(url):
    req = requests.get(url, headers=headers)
    src = req.text
    soup = BeautifulSoup(src, "lxml")
    # 正确匹配itemprop="brand"的dd元素
    brand_container = soup.find(itemprop="brand")
    if brand_container:
        # 获取子a标签的文本,strip()清理多余空格换行
        car_brand = brand_container.find("a").get_text(strip=True)
        print(car_brand)
    else:
        print("未找到品牌元素")

方法2:用CSS选择器直接定位目标a标签

def get_car_datas(url):
    req = requests.get(url, headers=headers)
    src = req.text
    soup = BeautifulSoup(src, "lxml")
    # 通过CSS选择器直接定位itemprop="brand"的dd下的a标签
    brand_link = soup.select_one('dd[itemprop="brand"] > a')
    if brand_link:
        car_brand = brand_link.get_text(strip=True)
        print(car_brand)
    else:
        print("未找到品牌元素")

方法3:直接提取父元素下的所有文本

如果不确定子元素结构,可直接提取父元素内的所有文本(自动忽略标签):

def get_car_datas(url):
    req = requests.get(url, headers=headers)
    src = req.text
    soup = BeautifulSoup(src, "lxml")
    brand_container = soup.find(itemprop="brand")
    if brand_container:
        car_brand = brand_container.get_text(strip=True)
        print(car_brand)
    else:
        print("未找到品牌元素")

关键注意点

  • 属性匹配时不要给属性名加下划线,这是BeautifulSoup的语法规范
  • 必须增加空值判断,防止页面结构变化或元素不存在时触发报错
  • 用 get_text(strip=True) 可以自动清理文本前后的空格、换行符,得到干净的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:47:10