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

能否用BeautifulSoup实现动态匹配递增类名的元素查找?

解决方法

当然可以用BeautifulSoup实现这个需求,你的代码有几个问题导致失败,修正后就能正常工作:

  1. 字符串格式化错误:你写的"pizdz_{s}"不会自动替换变量s的值,需要用Python的格式化语法(比如f-string)
  2. 参数名错误:BeautifulSoup中指定class需要用class_参数,而不是class(因为class是Python的关键字)
  3. 语法小问题:Python的循环关键字是小写的for,不是For

修正后的代码

from bs4 import BeautifulSoup

# 假设soup已经是解析好的对象
city = soup.find_all("div", class_="pizdz") 

s = 0
for div in city:
    # 使用f-string格式化class名称,同时用class_参数
    a_tag = div.find("a", class_=f"pizdz_{s}")    
    if a_tag:
        # 找到元素后可以做你需要的操作,比如打印文本
        print(a_tag.text)
    s += 1

更简洁的写法(用enumerate获取索引)

不需要手动维护s变量,直接用enumerate遍历同时拿到索引和div元素:

city = soup.find_all("div", class_="pizdz") 

for index, div in enumerate(city):
    a_tag = div.find("a", class_=f"pizdz_{index}")
    if a_tag:
        print(a_tag.get("href"))  # 示例:获取a标签的链接

如果还是找不到元素,建议先打印每个div的内容,确认目标a标签确实存在于对应的div下,避免页面结构和你预期不符的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:01:33