code: def extract_content(self, selector='', attr='', default='', connector='', *args, **kwargs):
  		
  		try:
  			if selector.lower() == "url":
  				return self.url
  			if attr.lower() == "text":
  				tag = self.get_tree_tag(selector=selector, get_one=True)
  				content = connector.join([make_ascii(x).strip() for x in tag.itertext()])
  				content = content.replace("\n", " ").strip()
  			else:
  				tag = self.get_tree_tag(selector=selector, get_one=True)
  				content = tag.get(attr)
  				if attr in ["href", "src"]:
  					content = urljoin(self.url, content)
  			return content
  		except IndexError:
  			if default is not "":
  				return default
  			raise Exception("There is no content for the %s selector - %s" % (self.__selector_type__, selector))
  		except XPathError:
  			raise Exception("Invalid %s selector - %s" % (self.__selector_type__, selector))
docs: Method for performing the content extraction for the particular selector type. \
  
  		If the selector is "url", the URL of the current web page is returned.
  		Otherwise, the selector expression is used to extract content. The particular \
  		attribute to be extracted ("text", "href", etc.) is specified in the method \
  		arguments, and this is used to extract the required content. If the content \
  		extracted is a link (from an attr value of "href" or "src"), the URL is parsed \
  		to convert the relative path into an absolute path.
  
  		If the selector does not fetch any content, the default value is returned. \
  		If no default value is specified, an exception is raised.
  
  		:param selector: The XPath expression
  		:param attr: The attribute to be extracted from the selected tag
  		:param default: The default value to be used if the selector does not return any data
  		:param connector: String connector for list of data returned for a particular selector
  		:return: The extracted content