'Fetch the authors of the article, return as a list
Only works for english articles'

def get_authors(self, doc):

    _digits = re.compile('\\d')
    def contains_digits(d):
        return bool(_digits.search(d))
    def uniqify_list(lst):
        'Remove    duplicates    from    provided    list    but    maintain    original    order.\n                                                        Derived    from    http://www.peterbe.com/plog/uniqifiers-benchmark\n                                                '
        seen = {}
        result = []
        for item in lst:
            if (item.lower() in seen):
                continue
            seen[item.lower()] = 1
            result.append(item.title())
        return result
    def parse_byline(search_str):
        "\n                                                Takes    a    candidate    line    of    html    or    text    and\n                                                extracts    out    the    name(s)    in    list    form:\n                                                >>>    parse_byline('<div>By:    <strong>Lucas    Ou-Yang</strong>,<strong>Alex    Smith</strong></div>')\n                                                ['Lucas    Ou-Yang',    'Alex    Smith']\n                                                "
        search_str = re.sub('<[^<]+?>', '', search_str)
        search_str = re.sub('[bB][yY][\\:\\s]|[fF]rom[\\:\\s]', '', search_str)
        search_str = search_str.strip()
        name_tokens = re.split("[^\\w'\\-\\.]", search_str)
        name_tokens = [s.strip() for s in name_tokens]
        _authors = []
        curname = []
        delimiters = ['and', ',', '']
        for token in name_tokens:
            if (token in delimiters):
                if (len(curname) > 0):
                    _authors.append('    '.join(curname))
                    curname = []
            elif (not contains_digits(token)):
                curname.append(token)
        valid_name = (len(curname) >= 2)
        if valid_name:
            _authors.append('    '.join(curname))
        return _authors
    ATTRS = ['name', 'rel', 'itemprop', 'class', 'id']
    VALS = ['author', 'byline', 'dc.creator']
    matches = []
    authors = []
    for attr in ATTRS:
        for val in VALS:
            found = self.parser.getElementsByTag(doc, attr=attr, value=val)
            matches.extend(found)
    for match in matches:
        content = ''
        if (match.tag == 'meta'):
            mm = match.xpath('@content')
            if (len(mm) > 0):
                content = mm[0]
        else:
            content = (match.text or '')
        if (len(content) > 0):
            authors.extend(parse_byline(content))
    return uniqify_list(authors)
