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

Python使用BeautifulSoup爬取plaque类元素无法提取内部文本是什么原因

问题根源

存在两个核心错误:

  • 逻辑重复查找:你已经通过cards.find_all(class_='plaque')拿到了所有plaque元素的列表cards_list,循环遍历的时候每个元素本身就是plaque节点,不需要再在节点内部二次查找class_='plaque'的子元素,二次查找找不到匹配内容自然返回None,调用.text属性就会报错。
  • 语法&参数错误:print(len(cards_list)缺少右括号,运行会直接触发语法报错;同时requests.get的入参需要带http/https协议头,否则会直接请求失败。

修正后代码

import requests
from bs4 import BeautifulSoup

# 采集页面
page = requests.get('http://www.somesite.com') # 补充协议头,请求才可以正常发送
print(page.status_code) # 建议先打印状态码,确认是200再继续解析,避免请求失败后解析空内容
soup = BeautifulSoup(page.text, 'html.parser')
cards = soup.find(class_="content cardlisting small")
cards_list = cards.find_all(class_='plaque')
print(len(cards_list)) # 补充缺失的右括号
for plaque_item in cards_list:
    # 直接读取当前plaque节点的text属性即可,不需要二次查找
    cards_name = plaque_item.text.strip() # strip()可去除首尾多余的空格、换行符
    print(cards_name)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:45:02