如何用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)
我的 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)