gpt4 book ai didi

python - 在漂亮的汤中只获取直接元素

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:26 25 4
gpt4 key购买 nike

<body>
<p class="title">
<b>
The Dormouse's story
</b>
</p>
<p class="story">
....
<b>
A tale
</b>
</p>
</body>

我需要获取标签 <body> 的所有直接子代,但不是孙子。所以在这种情况下,它应该只输出 <p class="title"><p class="story"> .

我找到的最接近的方法同时输出标签和它们的所有子标签。我怎样才能做对?

最佳答案

首先,您可以使用find_all(recursive=False) 获取所有子标签。 recursive=False让您成为标签的直接子代。然后,我唯一做的就是将数据格式化为字符串。

我在标签中添加了更多属性以表明它适用于所有情况。

html = '''
<body>
<p class="title" id="title">
<b>
The Dormouse's story
</b>
</p>
<p class="story stories">
....
<b>
A tale
</b>
</p>
</body>
'''

soup = BeautifulSoup(html, 'lxml')

for tag in soup.body.find_all(recursive=False):
attributes = ' '.join('{}="{}"'.format(
key,
' '.join(value) if isinstance(value, list) else value
) for key, value in tag.attrs.items())

tag_string = '<{} {}>'.format(tag.name, attributes)
print(tag_string)

输出:

<p class="title" id="title">
<p class="story stories">

我之所以使用 ' '.join(value) if isinstance(value, list) else value 而不是直接使用 value 的原因是 class 在列表中可用。

关于python - 在漂亮的汤中只获取直接元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49176961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com