def __init__(self, metadata, output_dir=None, strict_validation=None,<EOL>fastmode=False):
super(Scraper, self).__init__()<EOL>self.timeout = settings.SCRAPELIB_TIMEOUT<EOL>self.cache_storage = scrapelib.FileCache(settings.BILLY_CACHE_DIR)<EOL>self.requests_per_minute = settings.SCRAPELIB_RPM<EOL>self.retry_attempts = settings.SCRAPELIB_RETRY_ATTEMPTS<EOL>self.retry_wait_seconds = settings.SCRAPELIB_RETRY_WAIT_SECONDS<EOL>if fastmode:<EOL><INDENT>self.requests_per_minute = <NUM_LIT:0><EOL>self.cache_write_only = False<EOL><DEDENT>self.metadata = metadata<EOL>self.output_dir = output_dir<EOL>self.output_names = set()<EOL>os.path.isdir(self.output_dir) or os.path.makedirs(self.output_dir)<EOL>self.strict_validation = strict_validation<EOL>self.validator = DatetimeValidator()<EOL>self._schema = {}<EOL>self._load_schemas()<EOL>self.logger = logging.getLogger("<STR_LIT>")<EOL>self.log = self.logger.info<EOL>self.info = self.logger.info<EOL>self.debug = self.logger.debug<EOL>self.warning = self.logger.warning<EOL>self.error = self.logger.error<EOL>self.critical = self.logger.critical<EOL>
Create a new Scraper instance.

:param metadata: metadata for this scraper
:param output_dir: the data directory to use
:param strict_validation: exit immediately if validation fails