diff options
author | Yen Chi Hsuan <yan12125@gmail.com> | 2016-07-06 20:02:52 +0800 |
---|---|---|
committer | Yen Chi Hsuan <yan12125@gmail.com> | 2016-07-06 20:02:52 +0800 |
commit | 84c237fb8a2afa06fd3c36f7da9517682e63480e (patch) | |
tree | 4bc87148026bb3bd6ed279d3f354eaf0004e97e4 /youtube_dl/utils.py | |
parent | ab49d7a9fae08763de549f85ba138b22f9122a99 (diff) |
[utils] Add get_element_by_class
For #9950
Diffstat (limited to 'youtube_dl/utils.py')
-rw-r--r-- | youtube_dl/utils.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index 36d5b6c0f..3498697b6 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -310,9 +310,17 @@ def get_element_by_id(id, html): return get_element_by_attribute('id', id, html) -def get_element_by_attribute(attribute, value, html): +def get_element_by_class(class_name, html): + return get_element_by_attribute( + 'class', r'[^\'"]*\b%s\b[^\'"]*' % re.escape(class_name), + html, escape_value=False) + + +def get_element_by_attribute(attribute, value, html, escape_value=True): """Return the content of the tag with the specified attribute in the passed HTML document""" + value = re.escape(value) if escape_value else value + m = re.search(r'''(?xs) <([a-zA-Z0-9:._-]+) (?:\s+[a-zA-Z0-9:._-]+(?:=[a-zA-Z0-9:._-]*|="[^"]*"|='[^']*'))*? @@ -321,7 +329,7 @@ def get_element_by_attribute(attribute, value, html): \s*> (?P<content>.*?) </\1> - ''' % (re.escape(attribute), re.escape(value)), html) + ''' % (re.escape(attribute), value), html) if not m: return None |