python-3.x - 如何获得BeautifulSoup标签的所有直接子级?

标签 python-3.x beautifulsoup siblings

如何使用BeautifulSoup(bs4)检索(而非递归)所有子级?

<div class='body'><span>A</span><span><span>B</span></span><span>C</span></div>

我想得到这样的块:

block1 : <span>A</span>
block2 : <span><span>B</span></span>
block3 : <span>C</span>


我这样做:

for j in soup.find_all(True)[:1]:
            if isinstance(j, NavigableString):
                continue
            if isinstance(j, Tag):
                tags.append(j.name)
                # Get siblings
                for k in j.find_next_siblings():
                    # k is sibling of first element


有没有更清洁的方法可以做到这一点?

最佳答案

如果只想选择直接后代,则可以将recursive参数设置为False
您提供的html的示例:

from bs4 import BeautifulSoup

html = "<div class='body'><span>A</span><span><span>B</span></span><span>C</span></div>"
soup = BeautifulSoup(html, "lxml") 
for j in soup.div.find_all(recursive=False):
    print(j)




<span>A</span>
<span><span>B</span></span>
<span>C</span>

关于python-3.x - 如何获得BeautifulSoup标签的所有直接子级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48045298/

相关文章:

python - 在python3中执行终端命令

python - 在数据帧上迭代 re.split()

python - 使用网格管理器添加小部件后的 tkinter 可滚动 Canvas

Python BeautifulSoup 错误

python - Beautiful Soup 并提取数组的字符串部分

css - 是否有 "previous sibling"选择器?

css - 使用 CSS 在悬停时更改 sibling 的状态

python - 从基于登录的网站抓取数据时如何避免被禁止?

python - 按下一页链接爬行

jquery - 使用 jquery close() 查找与已知同级元素最接近的元素