如何用BeautifulSoup获取某个class下的所有标签(含内容)?

How to get all the tags (with content) under a certain class with BeautifulSoup?

我的 soup 元素中有一个 class,它是一个单元的描述。

<div class="ats-description">
 <p>Here is a paragraph</p>
 <div>inner div</div>
 <div>Another div</div>
 <ul>
    <li>Item1</li>
    <li>Item2</li>
    <li>Item3</li>
 </ul>
</div>

我可以用 soup.select(".ats-description")[0] 轻松抓住这部分。 现在我想删除 <div class="ats-description">,只保留所有内部标签(保留文本结构)。怎么做?

soup.select(".ats-description")[0].getText() 给我所有的文本,像这样:

'\nHere is a paragraph\ninner div\nAnother div\n\nItem1\nItem2\nItem3\n\n\n'

但是删除了所有内部标签,所以它只是非结构化文本。我也想保留标签。

试试这个,按 soup.find_all()

列表中的标签匹配
from bs4 import BeautifulSoup

html="""<div class="ats-description">
 <p>Here is a paragraph</p>
 <div>inner div</div>
 <div>Another div</div>
 <ul>
    <li>Item1</li>
    <li>Item2</li>
    <li>Item3</li>
 </ul>
</div>"""

soup = BeautifulSoup(html, 'lxml')
print(soup.select_one("div.ats-description").find_all(['p','div','ul']))

要获取 innerHTML,请使用方法 .decode_contents()

innerHTML = soup.select_one('.ats-description').decode_contents()
print(innerHTML)