我有一些我用BeautifulSoup解析的html代碼。其中一個要求是標籤不嵌套在段落或其他文本標籤中。用BeautifulSoup分解元素
例如,如果我有這樣的代碼:
<p>
first text
<a href="...">
<img .../>
</a>
second text
</p>
我需要把它改造成這樣的:
<p>first text</p>
<img .../>
<p>second text</p>
我做了一些提取圖像和後添加他們該段落,像這樣:
for match in soup.body.find_all(True, recursive=False):
try:
for desc in match.descendants:
try:
if desc.name in ['img']:
if (hasattr(desc, 'src')):
# add image as an independent tag
tag = soup.new_tag("img")
tag['src'] = desc['src']
if (hasattr(desc, 'alt')):
tag['alt'] = desc['alt']
else
tag['alt'] = ''
match.insert_after(tag)
# remove image from its container
desc.extract()
except AttributeError:
temp = 1
except AttributeError:
temp = 1
我寫了另一段代碼刪除空的電子郵件lement(像它的圖像被刪除後留空的標籤),但我不知道如何將元素拆分爲兩個不同的元素。
我試圖遠離字符串解析,因爲我可能會結束與未封閉的標籤。我希望BeautifulSoup知道如何修復html代碼並使其有效。無論哪種方式,我會嘗試一下,看看會發生什麼:) –
美麗的肥皂有美化選項,所以做這個soup.prettify()來測試它,它會返回格式良好的HTML。 – Develoger
@DušanRadojević美麗的肥皂總是洗的HTML(: – Rubens