我有這樣的 HTML 標簽
<div class="block-inner clearfix">
<div class="content clearfix">
<h3><a href="/">
<img alt="" src="/sites/default/files/house-png-202.png" style="width: 35px; float: left; height: 35px;"/></a>
<a href="/news-list">**News**</a>
<a href="/events">**Events**</a>
<a href="/chitin">*CHITIN*</a></h3>
</div>
</div>
我需要這樣的輸出
<div class="block-inner clearfix">
<div class="content clearfix">
<h3><a href="/">
<img alt="" src="/sites/default/files/house-png-202.png" style="width: 35px; float: left; height: 35px;"/></a>
<a href="/news-list"></a>
<a href="/events"></a>
<a href="/chitin"></a></h3>
</div>
</div>
我只需要 HTML 元素和 HTML 標簽內的屬性,標簽之間的內容不需要。這只是一個例子。
實際上,我想做的是...從網站中提取 Body 元素并將其轉換為只有標簽(沒有內容)的網站骨架
有什么辦法嗎?謝謝
uj5u.com熱心網友回復:
要獲得骨架,您可以遞回地洗掉所有文本元素:
from bs4 import BeautifulSoup
from bs4.element import NavigableString
html = """<div >
<div >
<h3><a href="/">
<img alt="獲取 HTML 中的所有標簽作為 Python 中的骨架" src="/sites/default/files/house-png-202.png" style="width: 35px; float: left; height: 35px;"/></a>
<a href="/news-list">**News**</a>
<a href="/events">**Events**</a>
<a href="/chitin">*CHITIN*</a></h3>
</div>
</div>"""
def remove_text(soup):
contents = []
for element in soup.contents:
if not isinstance(element, NavigableString):
contents.append(remove_text(element))
soup.contents = contents
return soup
soup = BeautifulSoup(html, "html.parser")
soup = remove_text(soup)
print(soup.prettify())
這將導致 HTML 看起來像:
<div class="block-inner clearfix">
<div class="content clearfix">
<h3>
<a href="/">
<img alt="" src="/sites/default/files/house-png-202.png" style="width: 35px; float: left; height: 35px;"/>
</a>
<a href="/news-list">
</a>
<a href="/events">
</a>
<a href="/chitin">
</a>
</h3>
</div>
</div>
uj5u.com熱心網友回復:
我已將您的資料視為
html您想從標簽中洗掉文本資料我們可以.clear()在標簽上使用方法但也有一個問題您不想洗掉標記之間的
a標記,因此您可以指定條件,就好像它存在一樣,img或者任何其他html標記都可以在那里并且不會執行.clear()操作
html="""<div >
<div >
<h3><a href="/">
<img alt="獲取 HTML 中的所有標簽作為 Python 中的骨架" src="/sites/default/files/house-png-202.png" style="width: 35px; float: left; height: 35px;"/></a>
<a href="/news-list">**News**</a>
<a href="/events">**Events**</a>
<a href="/chitin">*CHITIN*</a></h3>
</div>
</div>"""
soup=BeautifulSoup(html,"html.parser")
main_data=soup.find("h3").find_all("a")
for i in main_data:
try:
if i.find_next().name=="img":
continue
except:
pass
輸出:
<div class="block-inner clearfix">
<div class="content clearfix">
<h3><a href="/">
<img alt="" src="/sites/default/files/house-png-202.png" style="width: 35px; float: left; height: 35px;"/></a>
<a href="/news-list"></a>
<a href="/events"></a>
<a href="/chitin"></a></h3>
</div>
</div>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/377775.html
