BeautifulSoup遍历指定class的div标签仅重复输出首个结果如何解决
问题解决方法
核心错误原因
你代码的问题出在for循环的取值逻辑:你在循环内始终访问tango[0],也就是每次都取所有concept_light clearfix节点列表的第一个元素,自然只会重复输出第一个结果。
修改后的可运行代码
from bs4 import BeautifulSoup import requests req = requests.get(f"https://jisho.org/search/%23words%20%23n%20?page=1") soup = BeautifulSoup(req.text, 'html.parser') concepts = soup.findAll("div",{"class":"concepts"}) # 这一步已经拿到了所有class为concept_light clearfix的节点列表,逻辑没问题 tango = concepts[0].findAll("div",{"class":"concept_light clearfix"}) # 把循环占位符_换成实际的迭代变量,每次循环item就代表当前的单个目标节点 for item in tango: # 直接对当前循环的item做查询,不要去取tango[0] tango1 = item.findAll("span",{"class":"text"})[0].text print(tango1)
逻辑说明
findAll返回的是符合条件的所有节点组成的列表,你之前获取tango的逻辑是正确的,已经拿到了所有你需要遍历的节点- for循环遍历列表时,直接用迭代变量接收每次循环拿到的单个节点,直接操作这个变量就可以实现逐个遍历的效果,不需要再通过列表索引取值,避免了固定取第一个索引的错误
内容的提问来源于stack exchange,提问作者yami123
相关产品推荐
相关产品推荐

