<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def soup(self, *args, **kwargs):
 """Parse the currently loaded website. Optionally, SoupStrainer can be used to only parse relevant parts of the page. This can be particularly useful if the website is complex or perfomance is a factor. <https://www.crummy.com/software/BeautifulSoup/bs4/doc/#soupstrainer> Args: *args: Optional positional arguments that `SoupStrainer` takes. **kwargs: Optional keyword argument that `SoupStrainer` takes. Returns: A `BeautifulSoup` object. Raises: NoWebsiteLoadedError: If no website is currently loaded. ParsingError: If the current response isn't supported by `bs4` """

        if self._url is None:
            raise NoWebsiteLoadedError('website parsing requires a loaded website')

        content_type = self._response.headers.get('Content-Type', '')
        if not any(markup in content_type for markup in ('html', 'xml')):
            raise ParsingError('unsupported content type \'{}\''.format(content_type))

        strainer = SoupStrainer(*args, **kwargs)
        return BeautifulSoup(self._response.content, self.parser, parse_only=strainer)