<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def extract_links(self, selector='', *args, **kwargs):
 		""" 		Method for performing the link extraction for the crawler. \ 		The selector passed as the argument is a selector to point to the anchor tags \ 		that the crawler should pass through. A list of links is obtained, and the links \ 		are iterated through. The relative paths are converted into absolute paths and \ 		a ``XpathSelector``/``CssSelector`` object (as is the case) is created with the URL of the next page as the argument \ 		and this created object is yielded. 		The extract_links method basically generates ``XpathSelector``/``CssSelector`` objects for all of \ 		the links to be crawled through. 		:param selector: The selector for the anchor tags to be crawled through 		:return: A ``XpathSelector``/``CssSelector`` object for every page to be crawled through 		 		"""

		try:
			links = self.get_tree_tag(selector=selector)
			for link in links:
				next_url = urljoin(self.url, link.get('href'))
				yield type(self)(next_url)
		except XPathError:
			raise Exception("Invalid %s selector - %s" % (self.__selector_type__, selector))
		except Exception:
			raise Exception("Invalid %s selector - %s" % (self.__selector_type__, selector))