code: def handle_startendtag(self, tag, attrs):
          
          dattrs = dict(attrs)
          if tag.lower() == 'link':
              #print "Found link"
              if all (k in dattrs for k in ('rel', 'href', 'type')):
                  if ( dattrs['rel'].lower() == 'stylesheet' and 
                       dattrs['type'].lower() == 'text/css' ):
                      #try to open the url...
                      #print "Trying to read %s"  % dattrs['href']
                      if (dattrs['href'][:5].lower() == 'http:' or 
                         dattrs['href'][:6].lower() == 'https:'):
                          self.linked_sheets.append(dattrs['href'])
                      else:
                          self.linked_sheets.append(self.url_root+dattrs['href'])
          self.append_styles(tag, attrs)
docs: Called when Cssparser finds a tag that does not have a
          closing tag, such as <meta>, or <link>. These tags have
          no data, so we just pass them forward.
          @param <string> tag
              The HTML tag we're currently parsing
          @param <tuple> attrs
             A tuple of HTML element attributes such as 'class', 'id',
             'style', etc. The tuple is of the form ('html_attribute',
             'attr1', 'attr2', 'attr3' ... 'attrN')