如何使用BeautifulSoup获取某个类下的所有标记(包含内容)?

2024-04-24 12:31:50 发布

您现在位置:Python中文网/ 问答频道 /正文

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

<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'

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


2条回答

试试这个,在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)

相关问题 更多 >