如何使用BeautifulSoup快速获取指定父div下第二个子div的文本内容
解决方法
你之前的代码存在两个明显错误:
- 查询的父div类名写为
f_fs13 margin_top15,但你提供的HTML中父div仅包含f_fs13类,无法匹配到对应元素 - 索引
[1]不能直接写在find_all的参数里,需要先拿到find_all返回的元素列表后再通过索引取值
最简实现代码
如果页面中只有一个类为f_fs13的父div,直接用一行代码即可拿到目标文本:
target_text = page_soup.find("div", class_="f_fs13").find_all("div")[1].get_text(strip=True)
如果页面中存在多个类为f_fs13的父div,先选定对应父元素再取值即可:
# 先拿到所有符合条件的父div parent_div_list = page_soup.find_all("div", class_="f_fs13") # 取第N个父div下的第二个子div文本,索引从0开始计数 target_text = parent_div_list[0].find_all("div")[1].get_text(strip=True)
补充说明
find方法仅返回匹配到的第一个元素,适合确定只有一个目标父元素的场景,比find_all更高效find_all("div")返回父元素下所有子div组成的列表,索引从0开始,所以第二个元素取索引[1]get_text(strip=True)会自动去除文本前后的多余换行、空格,直接拿到干净的range 5内容- 如果怕出现索引越界报错,可以先判断
len(父div下的子div列表) >= 2再执行取值操作
内容的提问来源于stack exchange,提问作者jeffrey123520
相关产品推荐
相关产品推荐

