我正在嘗試將BeautifulSoup模塊與 Python 一起使用來執行以下操作:
在 HTML 的 div 中,對于每個段落標記,我想在段落中每個單詞的第一個字母添加一個粗體標記。例如:
<div class="body">
<p>The quick brown fox</p>
</div>
內容為:快速的棕色狐貍
然后會變成
<div class="body">
<p><b>T</b>he <b>q</b>uick <b>b</b>rown <b>f</b>ox</p>
</div>
那將是:T he q uick brown fox
使用bs4我一直無法找到一個好的解決方案來做到這一點,并對想法持開放態度。
uj5u.com熱心網友回復:
您可以replace_with()結合使用list comprehension- Extract text/ stringfrom tag/ bs4 物件,將其作為文本處理,然后用 new 替換標簽bs4 object:
soup.p.replace_with(
BeautifulSoup(
' '.join([s.replace(s[0],f'<b>{s[0]}</b>') for s in soup.p.string.split(' ')]),'html.parser'
)
)
例子
from bs4 import BeautifulSoup
html = '''
<div >
<p>The quick brown fox</p>
</div>'''
soup = BeautifulSoup(html,'html.parser')
soup.p.replace_with(
BeautifulSoup(
' '.join([s.replace(s[0],f'<b>{s[0]}</b>') for s in soup.p.string.split(' ')]),'html.parser'
)
)
soup
輸出
<div class="body">
<b>T</b>he <b>q</b>uick <b>b</b>rown <b>f</b>ox
</div>
uj5u.com熱心網友回復:
我對Python如何詳細決議HTML了解不多,但我可以為你提供一些思路。
要查找<p>標簽,您可以使用 RegEx<p.*?>.*?</p>或使用str.find("<p>")and walk until </p>。
要添加<b>標簽,也許這段代碼會起作用:
def add_bold(s: str) -> str:
ret = ""
isFirstLet = True
for i in s:
if isFirstLet:
ret = "<b>" i "</b>"
isFirstLet = False
else:
ret = i
if i == " ": isFirstLet = True
return ret
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/483230.html
下一篇:隨時間的scrapy遞回回呼
