I tried to run the spider out of the box on my macbook, but I had some trouble with the pipelines reading or writing the sqlite database file.
(council-crawler) โ council_crawler git:(master) scrapy crawl belmont
2017-07-10 20:18:11 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: council_crawler)
2017-07-10 20:18:11 [scrapy.utils.log] INFO: Overridden settings: {'BOT_NAME': 'council_crawler', 'NEWSPIDER_MODULE': 'council_crawler.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDE
R_MODULES': ['council_crawler.spiders']}
2017-07-10 20:18:11 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
'scrapy.extensions.telnet.TelnetConsole',
'scrapy.extensions.memusage.MemoryUsage',
'scrapy.extensions.logstats.LogStats']
2017-07-10 20:18:11 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware',
'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
'scrapy.downloadermiddlewares.retry.RetryMiddleware',
'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
'scrapy.downloadermiddlewares.stats.DownloaderStats']
2017-07-10 20:18:11 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
'scrapy.spidermiddlewares.referer.RefererMiddleware',
'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
'scrapy.spidermiddlewares.depth.DepthMiddleware']
Unhandled error in Deferred:
2017-07-10 20:18:11 [twisted] CRITICAL: Unhandled error in Deferred:
2017-07-10 20:18:11 [twisted] CRITICAL:
Traceback (most recent call last):
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 2147, in _wrap_pool_connect
return fn()
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/pool.py", line 387, in connect
return _ConnectionFairy._checkout(self)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/pool.py", line 766, in _checkout
fairy = _ConnectionRecord.checkout(pool)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/pool.py", line 516, in checkout
rec = pool._do_get()
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/pool.py", line 1229, in _do_get
return self._create_connection()
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/pool.py", line 333, in _create_connection
return _ConnectionRecord(self)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/pool.py", line 461, in __init__
self.__connect(first_connect_check=True)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/pool.py", line 651, in __connect
connection = pool._invoke_creator(self)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/engine/strategies.py", line 105, in connect
return dialect.connect(*cargs, **cparams)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 393, in connect
return self.dbapi.connect(*cargs, **cparams)
sqlite3.OperationalError: unable to open database file
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/twisted/internet/defer.py", line 1386, in _inlineCallbacks
result = g.send(result)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/scrapy/crawler.py", line 77, in crawl
self.engine = self._create_engine()
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/scrapy/crawler.py", line 102, in _create_engine
return ExecutionEngine(self, lambda _: self.stop())
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/scrapy/core/engine.py", line 70, in __init__
self.scraper = Scraper(crawler)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/scrapy/core/scraper.py", line 71, in __init__
self.itemproc = itemproc_cls.from_crawler(crawler)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/scrapy/middleware.py", line 58, in from_crawler
return cls.from_settings(crawler.settings, crawler)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/scrapy/middleware.py", line 40, in from_settings
mw = mwcls()
File "/Users/jdebartola/d4d/town-council/council_crawler/council_crawler/pipelines.py", line 49, in __init__
models.create_tables(engine)
File "/Users/jdebartola/d4d/town-council/council_crawler/council_crawler/models.py", line 20, in create_tables
DeclarativeBase.metadata.create_all(engine)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/sql/schema.py", line 3934, in create_all
tables=tables)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1928, in _run_visitor
with self._optional_conn_ctx_manager(connection) as conn:
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/contextlib.py", line 82, in __enter__
return next(self.gen)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1921, in _optional_conn_ctx_manager
with self.contextual_connect() as conn:
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 2112, in contextual_connect
self._wrap_pool_connect(self.pool.connect, None),
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 2151, in _wrap_pool_connect
e, dialect, self)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1465, in _handle_dbapi_exception_noconnection
exc_info
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 203, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 186, in reraise
raise value.with_traceback(tb)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 2147, in _wrap_pool_connect
return fn()
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/pool.py", line 387, in connect
return _ConnectionFairy._checkout(self)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/pool.py", line 766, in _checkout
fairy = _ConnectionRecord.checkout(pool)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/pool.py", line 516, in checkout
rec = pool._do_get()
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/pool.py", line 1229, in _do_get
return self._create_connection()
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/pool.py", line 333, in _create_connection
return _ConnectionRecord(self)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/pool.py", line 461, in __init__
self.__connect(first_connect_check=True)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/pool.py", line 651, in __connect
connection = pool._invoke_creator(self)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/engine/strategies.py", line 105, in connect
return dialect.connect(*cargs, **cparams)
File "/Users/jdebartola/anaconda/envs/council-crawler/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 393, in connect
return self.dbapi.connect(*cargs, **cparams)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file