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

使用BeautifulSoup find_all()匹配多class元素时结果不符合预期的问题求助

使用BeautifulSoup find_all()匹配多class元素时结果不符合预期的问题求助

大家好,我最近在用BeautifulSoup处理网页抓取时遇到了棘手的问题,折腾了半天没找到原因,来请教下各位大佬。

我的需求很明确:抓取网页中所有带有inline-block w-[30px] px-2类的<span>元素里的数字。在目标网页里,这类元素的结构是这样的:

<span class="inline-block w-[30px] px-2">1</span>

而且这样的元素明明有35个,我预期能抓到全部35个元素,然后逐个输出里面的数字。

但我写的代码运行结果完全不对,先贴一下我的代码:

import requests
from bs4 import BeautifulSoup

url = "https://curiosa.io/decks/cmbcn15x3003cl704euvw894m"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# 尝试匹配多class的写法
cards = soup.find_all(class_ = ["inline-block", "w-[30px]", "px-2"])
print("length of cards: " + str(len(cards)))

for card in cards:
    num = card.get_text()
    print(f"{num}")

print("test")
print("test")

实际运行后出现的问题:

  1. cards的长度只有3,完全不是预期的35
  2. 调用card.get_text()也输出不了预期的数字,没有任何有效内容打印出来

我还尝试过更精确的写法,指定标签为span:

cards = soup.find_all("span", class_ = ["inline-block", "w-[30px]", "px-2"])

结果更糟,cards的长度直接变成0,一个元素都抓不到。

我现在甚至不确定是不是多class的匹配写法出了问题,但网页里明明白白有35个带有inline-block w-[30px] px-2类的元素,代码就是识别不到,真的搞不懂哪里错了,希望各位能帮我看看问题出在哪,谢谢!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 08:34:30