All you need to do is to provide a callable to find_all
to tell it which tags to keep.
s = '''<title>title</title>
<p>p</p>
<span>span</span>
<script>script</script>'''
soup = BeautifulSoup(s)
keepset = {'title','p','span'}
soup.find_all(lambda tag: tag.name in keepset)
Out[59]: [<title>title</title>, <p>p</p>, <span>span</span>]