def is_link(url, processed):
    """
    Determine whether or not a link should be crawled
    A url should not be crawled if it
        - Is a file
        - Has already been crawled
    Args:
        url: str Url to be processed
        processed: list[str] List of urls that have already been crawled
    Returns:
        bool If `url` should be crawled
    """
    if url not in processed:
        if url.startswith('#') or url.startswith('javascript:'):
            return False
        is_file = url.endswith(['pdf', 'jpg', 'jpeg', 'png', 'docx', 'csv', 'xls'])
        if is_file:
            return False
        return True
    return False