Last active
January 27, 2024 06:48
-
-
Save revotu/21d52bd20a073546983985ba3bf55deb to your computer and use it in GitHub Desktop.
remove all HTML attributes with BeautifulSoup except some tags(<a> <img>...)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from bs4 import BeautifulSoup | |
# remove all attributes | |
def _remove_all_attrs(soup): | |
for tag in soup.find_all(True): | |
tag.attrs = {} | |
return soup | |
# remove all attributes except some tags | |
def _remove_all_attrs_except(soup): | |
whitelist = ['a','img'] | |
for tag in soup.find_all(True): | |
if tag.name not in whitelist: | |
tag.attrs = {} | |
return soup | |
# remove all attributes except some tags(only saving ['href','src'] attr) | |
def _remove_all_attrs_except_saving(soup): | |
whitelist = ['a','img'] | |
for tag in soup.find_all(True): | |
if tag.name not in whitelist: | |
tag.attrs = {} | |
else: | |
attrs = dict(tag.attrs) | |
for attr in attrs: | |
if attr not in ['src','href']: | |
del tag.attrs[attr] | |
return soup |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Instead of removing HTML tags for the whole
soup
, how is this done for a specific BS4 tag?Example:
soup
:feed = BeautifulSoup(response, 'xml')
item = feed.select_one('item')
item
contains<a>
,<p>
, and<img>
tags that I want to remove, how is this accomplished?