def clean(
            self):
        """*parse and clean the html document with Mercury Parser*

        **Return:**
            - ``filePath`` -- path to the cleaned HTML document

        **Usage:**

            See class usage 
        """
        self.log.debug('starting the ``clean`` method')

        url = self.url

        # PARSE THE CONTENT OF THE WEBPAGE AT THE URL

        parser_response = self._request_parsed_article_from_mercury(url)
        if "503" in str(parser_response):
            return None
        article = parser_response.json()

        if not article:
            return None

        # GRAB THE CSS USED TO STYLE THE WEBPAGE/PDF CONTENT
        if self.style:
            moduleDirectory = os.path.dirname(__file__)
            cssFile = moduleDirectory + "/css/main.css"
            pathToReadFile = cssFile
            readFile = codecs.open(pathToReadFile, encoding='utf-8', mode='r')
            thisCss = readFile.read()
            readFile.close()
        else:
            thisCss = ""

        # CATCH ERRORS
        if "error" in article and article["error"] == True:
            print url
            print "    " + article["messages"]
            return None
        try:
            text = article["content"]
        except:
            print "Can't decode the text of %(url)s - moving on" % locals()
            return None

        # COMMON FIXES TO HTML TO RENDER CORRECTLY
        regex = re.compile(
            u'<span class="mw-editsection"><span class="mw-editsection-bracket">.*"mw-editsection-bracket">]')
        text = regex.sub(u"", text)
        regex2 = re.compile(
            u'\<sup class="noprint.*better source needed\<\/span\>\<\/a\>\<\/i\>\]\<\/sup\>', re.I)
        text = regex2.sub(u"", text)
        regex2 = re.compile(
            u'\<a href="https\:\/\/en\.wikipedia\.org\/wiki\/.*(\#.*)"\>\<span class=\"tocnumber\"\>', re.I)
        text = regex2.sub(u'<a href="\g<1>"><span class="tocnumber">', text)
        regex = re.compile(
            u'srcset=".*?">')
        text = regex.sub(u"", text)

        # GRAB HTML TITLE IF NOT SET IN ARGUMENTS
        if self.title == False:
            title = article["title"].encode("utf-8", "ignore")
            title = title.decode("utf-8")
            title = title.encode("ascii", "ignore")
            rstrings = """:/"&\\'`"""
            for i in rstrings:
                title = title.replace(i, "")

            # USE DATETIME IF TITLE STILL NOT SET
            if len(title) == 0:
                from datetime import datetime, date, time
                now = datetime.now()
                title = now.strftime("%Y%m%dt%H%M%S")
            self.title = title

        title = self.title.replace(".html", "")
        pageTitle = title.replace("_", " ")

        # REGENERATE THE HTML DOCUMENT WITH CUSTOM STYLE
        filePath = self.outputDirectory + "/" + title + ".html"
        writeFile = codecs.open(
            filePath, encoding='utf-8', mode='w')
        if self.metadata:
            metadata = "<title>%(title)s</title>" % locals()
        else:
            metadata = ""

        if self.h1:
            h1 = "<h1>%(pageTitle)s</h1>" % locals()
        else:
            h1 = ""
        content = u"""
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
%(metadata)s 

<style>
%(thisCss)s
</style>

</head>
<body>

%(h1)s 
<a href="%(url)s">original source</a>
</br></br>


%(text)s 
</body>
</html>""" % locals()
        writeFile.write(content)
        writeFile.close()

        self.log.debug('completed the ``clean`` method')

        tag(
            log=self.log,
            filepath=filePath,
            tags=False,
            rating=False,
            wherefrom=self.url
        )

        return filePath