如何使用CSS选择器获取指定id div的前一个相邻div元素
结论
原生CSS目前没有标准的:item-before伪类可以直接选中前一个相邻兄弟元素,不过在BeautifulSoup环境下有两种非常简单的实现方案,完全符合你「先让功能可用」的需求:
方案1:通过相邻元素属性获取(最稳定,兼容性最好)
先定位到固定带有id的#point元素,再调用BeautifulSoup内置的find_previous_sibling方法获取前一个相邻的div即可,完全不受目标div位置变化的影响:
from bs4 import BeautifulSoup # 假设soup为已解析好的页面文档对象 point_node = soup.select_one('#main-container > div#point') # 精准获取前一个相邻的div元素,自动忽略中间的空白文本/换行节点 target_div = point_node.find_previous_sibling('div')
方案2:用CSS :has()伪类实现(写法最简洁,一行搞定)
如果你使用的是4.7.0及以上版本的BeautifulSoup(目前主流版本均支持),可以直接用CSS的:has()伪类实现你要的选择逻辑:
target_div = soup.select_one('#main-container > div:has(+ div#point)')
上述选择器的逻辑就是:选中#main-container的直接子div,且这个div的下一个相邻兄弟是id为point的div,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者TayIsAsleep
相关产品推荐
相关产品推荐

