BeautifulSoupで解析しているhtmlコードがいくつかあります。要件の1つは、タグが段落やその他のテキストタグにネストされていないことです。
たとえば、次のようなコードがある場合:
<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
空の要素(画像が削除された後に空のままになるタグなど)を削除する別のコードを作成しましたが、要素を2つの異なる要素に分割する方法がわかりません。