You may match them and discard using re.findall:
text_list = list(filter(None, re.findall(r'(?s)<!--.*?-->|>(.*?)<', html)))
# Or, a bit more efficient:
text_list = list(filter(None, re.findall(r'<!--[^-]*(?:-(?!->)[^-]*)*-->|>([^<]*)<', html)))
See this regex demo (and the second one).
The regex matches substrings between <!-- and --> and matches substrings between < and >, capturing the text between the two latter delimiters into Group 1 and re.findall only returns the captures if there is a capturing group in the pattern.
See the Python demo:
import re
html = "<a href='link.html'>URL</a>Some text <!-- Comment --><p>Par here</p>More text"
text_list = list(filter(None, re.findall(r'(?s)<!--.*?-->|>(.*?)<', html)))
print(text_list)
# => ['URL', 'Some text ', 'Par here']