old_contents: """
  scrapple.selectors.selector
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  
  """
  
  from __future__ import print_function
  import requests
  from lxml import etree
  
  
  class Selector(object):
  	"""
  	This class defines the basic ``Selector`` object. 
  
  	"""
  	
  	def __init__(self, url):
  		"""
  		The URL of the web page to be loaded is validated - ensuring the schema has \
  		been specified, and that the URL is valid. A HTTP GET request is made to load \
  		the web page, and the HTML content of this fetched web page is used to generate \
  		the :ref:`element tree <concepts-structure>`. This is the element tree that will \
  		be parsed to extract the necessary content.
  
  		"""
  		try:
  			headers = {
  				'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0',
  				'content-encoding': 'gzip', 
  				'Accept-Encoding': 'identity, compress, gzip', 
  				'Accept': '*/*'
  			}
  			self.url = url
  			self.content = requests.get(url, headers=headers).content
  			self.tree = etree.HTML(self.content)
  		except requests.exceptions.MissingSchema:
  			raise Exception('URL should be of the form "http://<page_link>')
  		except requests.exceptions.InvalidURL:
  			raise Exception('The URL provided is invalid')
  		except requests.exceptions.ConnectionError:
  			raise Exception('Ensure that you are connected to the Internet and that the page exists')
  
  
  	def extract_content(self, selector, attr, default):
  		"""
  		Method for performing the content extraction for the particular selector type. \
  		A detailed description is provided in the derived classes. 
  
  		"""
  		raise NotImplementedError
  
  
  	def extract_links(self, selector):
  		"""
  		Method for performing the link extraction for the crawler. \
  		A detailed description is provided in the derived classes.
  
  		"""
  		raise NotImplementedError
  
new_contents: """
  scrapple.selectors.selector
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  
  """
  
  from __future__ import print_function
  import requests
  from lxml import etree
  import random
  
  
  class Selector(object):
  	"""
  	This class defines the basic ``Selector`` object. 
  
  	"""
  	
  	def __init__(self, url):
  		"""
  		The URL of the web page to be loaded is validated - ensuring the schema has \
  		been specified, and that the URL is valid. A HTTP GET request is made to load \
  		the web page, and the HTML content of this fetched web page is used to generate \
  		the :ref:`element tree <concepts-structure>`. This is the element tree that will \
  		be parsed to extract the necessary content.
  
  		"""
  		try:
  			headers = {
  				'content-encoding': 'gzip', 
  				'Accept-Encoding': 'identity, compress, gzip', 
  				'Accept': '*/*'
  			}
  			headers['User-Agent'] = random.choice([
  				'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0',
  				'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:34.0) Gecko/20100101 Firefox/34.0',
  				'Mozilla/5.0 (Windows NT 6.1; rv:34.0) Gecko/20100101 Firefox/34.0',
  		        'Mozilla/5.0 (X11; Linux x86_64; rv:34.0) Gecko/20100101 Firefox/34.0',
  		        'Mozilla/5.0 (Windows NT 5.1; rv:34.0) Gecko/20100101 Firefox/34.0',
  		        'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1',
  		        'Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0',
  		        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10; rv:33.0) Gecko/20100101 Firefox/33.0',
  		        'Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/31.0',
  		        'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
  		        'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36',
  		        'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36',
  		        'Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36',
  		        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A',
  		        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2',
  			])
  			self.url = url
  			self.content = requests.get(url, headers=headers).content
  			self.tree = etree.HTML(self.content)
  		except requests.exceptions.MissingSchema:
  			raise Exception('URL should be of the form "http://<page_link>')
  		except requests.exceptions.InvalidURL:
  			raise Exception('The URL provided is invalid')
  		except requests.exceptions.ConnectionError:
  			raise Exception('Ensure that you are connected to the Internet and that the page exists')
  
  
  	def extract_content(self, selector, attr, default):
  		"""
  		Method for performing the content extraction for the particular selector type. \
  		A detailed description is provided in the derived classes. 
  
  		"""
  		raise NotImplementedError
  
  
  	def extract_links(self, selector):
  		"""
  		Method for performing the link extraction for the crawler. \
  		A detailed description is provided in the derived classes.
  
  		"""
  		raise NotImplementedError
  
subject: Add choice of user agent for selector