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

如何使用BeautifulSoup获取<body>标签的直接子元素而非后代元素?

获取的直接子元素(排除孙元素)

嘿,我明白你遇到的问题了——closest()方法确实不是干这个的,它是用来向上查找最近的匹配祖先元素的,和你要找直接子元素的需求完全反了方向,而且它也不会帮你筛选层级,所以才会带出所有子元素。

要精准获取<body>的直接子元素(也就是仅一级子节点,不包含孙节点及更深层级的元素),有两种非常直接的方法:

方法1:使用children属性

Element.children会返回当前元素的所有直接子元素节点(注意:只包含元素节点,不包括文本节点、注释节点这类非元素节点),完全符合你的需求。

示例代码:

// 获取<body>的所有直接子元素
const bodyDirectChildren = document.body.children;

// 如果需要转为数组方便后续操作(比如筛选)
const bodyDirectChildrenArray = Array.from(document.body.children);

// 筛选出你需要的<p class="title">和<p class="story">
const targetElements = bodyDirectChildrenArray.filter(el => {
  return el.classList.contains('title') || el.classList.contains('story');
});

方法2:使用CSS子选择器 + querySelectorAll

CSS的>选择器专门用来匹配直接子元素,结合querySelectorAll可以直接选中目标元素,写法更简洁。

示例代码:

// 直接获取<body>下的所有直接子元素
const bodyDirectChildren = document.querySelectorAll('body > *');

// 精准选中<body>下的直接子元素中class为title或story的p标签
const targetElements = document.querySelectorAll('body > p.title, body > p.story');

这两种方法都能完美帮你拿到<body>的直接子元素,不会包含任何孙元素。如果你的目标就是那两个特定的p标签,方法2的精准选择写法会更高效哦!

内容的提问来源于stack exchange,提问作者fajara kurniawan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:01:24