Issue
I have some HTML like this:
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin ultricies nec erat ut ornare. <span class="it">Duis vel ante finibus</span>, vestibulum felis non, venenatis mi. Integer imperdiet eleifend placerat.</p>
<p>Aenean id mollis ligula, vel vestibulum ante. <span class="it">Nullam feugiat ex a mi fringilla, vitae semper dolor efficitur.</span> Phasellus et sollicitudin urna, at lacinia arcu. Curabitur orci justo, accumsan eu tempor sed, volutpat ac metus.</p>
How can I convert the <span class="it"></span>
to <i></i>
? I.e.
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin ultricies nec erat ut ornare. <i>Duis vel ante finibus</i>, vestibulum felis non, venenatis mi. Integer imperdiet eleifend placerat.</p>
<p>Aenean id mollis ligula, vel vestibulum ante. <i>Nullam feugiat ex a mi fringilla, vitae semper dolor efficitur.</i> Phasellus et sollicitudin urna, at lacinia arcu. Curabitur orci justo, accumsan eu tempor sed, volutpat ac metus.</p>
Solution
You could simply rename the tags name
and delete its class
attribute:
for e in soup.select('span.it'):
e.name = 'i'
del e['class']
or in case that there are more attributes:
for e in soup.select('span.it'):
e.name = 'i'
for attr in list(e.attrs):
del e[attr]
Example
from bs4 import BeautifulSoup
html = '''
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin ultricies nec erat ut ornare. <span class="it">Duis vel ante finibus</span>, vestibulum felis non, venenatis mi. Integer imperdiet eleifend placerat.</p>
<p>Aenean id mollis ligula, vel vestibulum ante. <span class="it">Nullam feugiat ex a mi fringilla, vitae semper dolor efficitur.</span> Phasellus et sollicitudin urna, at lacinia arcu. Curabitur orci justo, accumsan eu tempor sed, volutpat ac metus.</p>
'''
soup = BeautifulSoup(html, 'html.parser')
for e in soup.select('span.it'):
e.name = 'i'
del e['class']
soup
Output
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin ultricies nec erat ut ornare. <i>Duis vel ante finibus</i>, vestibulum felis non, venenatis mi. Integer imperdiet eleifend placerat.</p>
<p>Aenean id mollis ligula, vel vestibulum ante. <i>Nullam feugiat ex a mi fringilla, vitae semper dolor efficitur.</i> Phasellus et sollicitudin urna, at lacinia arcu. Curabitur orci justo, accumsan eu tempor sed, volutpat ac metus.</p>
Answered By - HedgeHog
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.