能否用BeautifulSoup实现动态匹配递增类名的元素查找?
解决方法
当然可以用BeautifulSoup实现这个需求,你的代码有几个问题导致失败,修正后就能正常工作:
- 字符串格式化错误:你写的
"pizdz_{s}"不会自动替换变量s的值,需要用Python的格式化语法(比如f-string) - 参数名错误:BeautifulSoup中指定class需要用
class_参数,而不是class(因为class是Python的关键字) - 语法小问题: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
相关产品推荐
相关产品推荐

