code: def find(self, limit=None, reverse=False, sort=None,
               exclude=None, duplicates=True, pretty=False, **filters):
          if exclude is None:
              exclude = []
          if 'href' not in filters:
              filters['href'] = True
          search = self._soup.findAll('a', **filters)
          if reverse:
              search.reverse()
          links = []
          for anchor in search:
              build_link = anchor.attrs
              try:
                  build_link[u'seo'] = seoify_hyperlink(anchor['href'])
              except KeyError:
                  pass
              try:
                  build_link[u'text'] = anchor.string or build_link['seo']
              except KeyError:
                  pass
              ignore_link = False
              for nixd in exclude:
                  for key, value in six.iteritems(nixd):
                      if key in build_link:
                          if (isinstance(build_link[key], collections.Iterable)
                                  and not isinstance(build_link[key], six.string_types)):
                             for item in build_link[key]:
                                  ignore_link = exclude_match(value, item)
                          else:
                              ignore_link = exclude_match(value, build_link[key])
              if not duplicates:
                  for link in links:
                      if link['href'] == anchor['href']:
                          ignore_link = True
              if not ignore_link:
                  links.append(build_link)
              if limit is not None and len(links) == limit:
                  break
          if sort is not None:
              links = sorted(links, key=sort, reverse=reverse)
          if pretty:
              pp = pprint.PrettyPrinter(indent=4)
              return pp.pprint(links)
          else:
              return links