我有一些我用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