<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def scrap(self, url=None, scheme=None, timeout=None, html_parser=None, cache_ext=None ):
 """ Scrap a url and parse the content according to scheme :param url: Url to parse (default: self._url) :type url: str :param scheme: Scheme to apply to html (default: self._scheme) :type scheme: dict :param timeout: Timeout for http operation (default: self._timout) :type timeout: float :param html_parser: What html parser to use (default: self._html_parser) :type html_parser: str | unicode :param cache_ext: External cache info :type cache_ext: floscraper.models.CacheInfo :return: Response data from url and parsed info :rtype: floscraper.models.Response :raises WEBConnectException: HTTP get failed :raises WEBParameterException: Missing scheme or url """

        if not url:
            url = self.url
        if not scheme:
            scheme = self.scheme
        if not timeout:
            timeout = self.timeout
        if not html_parser:
            html_parser = self.html_parser
        if not scheme:
            raise WEBParameterException("Missing scheme definition")
        if not url:
            raise WEBParameterException("Missing url definition")
        resp = self.get(url, timeout, cache_ext=cache_ext)
        soup = BeautifulSoup(resp.html, html_parser)
        resp.scraped = self._parse_scheme(soup, scheme)
        return resp