'Push a start tag on to the stack.
If this method returns None, the tag was rejected by the
SoupStrainer. You should proceed as if the tag had not occured
in the document. For instance, if this was a self-closing tag,
don\'t call handle_endtag.'

def handle_starttag(self, name, namespace, nsprefix, attrs):

    self.endData()
    if (self.parse_only and (len(self.tagStack) <= 1) and (self.parse_only.text or (not self.parse_only.search_tag(name, attrs)))):
        return None
    tag = Tag(self, self.builder, name, namespace, nsprefix, attrs, self.currentTag, self.previous_element)
    if (tag is None):
        return tag
    if self.previous_element:
        self.previous_element.next_element = tag
    self.previous_element = tag
    self.pushTag(tag)
    return tag
