'The **kwargs argument may be filled with config values, which
is added into the config object'

def __init__(self, url, title='', source_url='', config=None, **kwargs):

    self.config = (config or Configuration())
    self.config = extend_config(self.config, kwargs)
    self.extractor = ContentExtractor(self.config)
    if (source_url == ''):
        scheme = urls.get_scheme(url)
        if (scheme is None):
            scheme = 'http'
        source_url = ((scheme + '://') + urls.get_domain(url))
    if ((source_url is None) or (source_url == '')):
        raise ArticleException('input    url    bad    format')
    self.source_url = source_url
    self.url = urls.prepare_url(url, self.source_url)
    self.title = title
    self.top_img = self.top_image = ''
    self.meta_img = ''
    self.imgs = self.images = []
    self.movies = []
    self.text = ''
    self.keywords = []
    self.meta_keywords = []
    self.tags = set()
    self.authors = []
    self.publish_date = ''
    self.summary = ''
    self.html = ''
    self.article_html = ''
    self.is_parsed = False
    self.download_state = ArticleDownloadState.NOT_STARTED
    self.download_exception_msg = None
    self.meta_description = ''
    self.meta_lang = ''
    self.meta_favicon = ''
    self.meta_data = {}
    self.canonical_link = ''
    self.top_node = None
    self.clean_top_node = None
    self.doc = None
    self.clean_doc = None
    self.additional_data = {}
