2026-07-31 00:05:19 [scrapy.utils.log] INFO: Scrapy 2.8.0 started (bot: modularspiders) 2026-07-31 00:05:19 [scrapy.utils.log] INFO: Versions: lxml 4.9.2.0, libxml2 2.9.14, cssselect 1.2.0, parsel 1.7.0, w3lib 2.1.1, Twisted 22.10.0, Python 3.10.15 (main, Oct 19 2024, 04:00:28) [GCC 12.2.0], pyOpenSSL 23.1.1 (OpenSSL 3.1.0 14 Mar 2023), cryptography 40.0.1, Platform Linux-5.10.0-21-amd64-x86_64-with-glibc2.36 2026-07-31 00:05:19 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'modularspiders', 'CLOSESPIDER_TIMEOUT': 3600, 'LOG_FILE': 'logs/default/thonk/d29193e88c7211f1ac510242ac11000e.log', 'NEWSPIDER_MODULE': 'modularspiders.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['modularspiders.spiders'], 'USER_AGENT': 'Mozilla/5.0 (compatible; Googlebot/2.1; ' '+http://www.google.com/bot.html)'} 2026-07-31 00:05:19 [py.warnings] WARNING: /code/lib/python3.10/site-packages/scrapy/utils/request.py:232: ScrapyDeprecationWarning: '2.6' is a deprecated value for the 'REQUEST_FINGERPRINTER_IMPLEMENTATION' setting. It is also the default value. In other words, it is normal to get this warning if you have not defined a value for the 'REQUEST_FINGERPRINTER_IMPLEMENTATION' setting. This is so for backward compatibility reasons, but it will change in a future version of Scrapy. See the documentation of the 'REQUEST_FINGERPRINTER_IMPLEMENTATION' setting for information on how to handle this deprecation. return cls(crawler) 2026-07-31 00:05:19 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.epollreactor.EPollReactor 2026-07-31 00:05:19 [scrapy.extensions.telnet] INFO: Telnet Password: b9d502d59c18e487 2026-07-31 00:05:19 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.memusage.MemoryUsage', 'scrapy.extensions.logstats.LogStats', 'scrapy.extensions.closespider.CloseSpider'] 2026-07-31 00:05:19 [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'] 2026-07-31 00:05:19 [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'] 2026-07-31 00:05:19 [scrapy.middleware] INFO: Enabled item pipelines: ['modularspiders.pipelines.MinimumViableItemPipeline', 'modularspiders.pipelines.RedisExporter', 'modularspiders.pipelines.BulkStoreUpdate'] 2026-07-31 00:05:19 [scrapy.core.engine] INFO: Spider opened 2026-07-31 00:05:19 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 00:05:19 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6029 2026-07-31 00:05:20 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None) 2026-07-31 00:05:22 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None) 2026-07-31 00:05:23 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:05:23 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:05:23 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:05:23 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:07:26 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:07:26 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:07:44 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:07:57 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:08:11 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:08:11 [scrapy.extensions.logstats] INFO: Crawled 7 pages (at 7 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 00:08:11 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:08:11 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:08:11 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:08:11 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:08:11 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:08:24 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:08:24 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:08:24 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:08:37 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:08:51 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:09:01 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:09:15 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:09:27 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:09:27 [scrapy.extensions.logstats] INFO: Crawled 14 pages (at 7 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 00:09:27 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:09:39 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:09:51 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:09:51 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:09:51 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:09:51 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:09:51 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:09:51 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:10:08 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:10:09 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:10:09 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:12:26 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:13:53 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:15:02 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:19:34 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:19:35 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:22:19 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:25:03 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:25:04 [scrapy.extensions.logstats] INFO: Crawled 23 pages (at 9 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 00:25:06 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/erica-kick-design-guide/ took longer than 180.0 seconds.. 2026-07-31 00:25:07 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/sebsongs-bread-butter/ took longer than 180.0 seconds.. 2026-07-31 00:25:11 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/small-ridged-pointer/ took longer than 180.0 seconds.. 2026-07-31 00:25:21 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/emute-lab-useq/ took longer than 180.0 seconds.. 2026-07-31 00:25:29 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/cutelab-mom-jeans-kit/ took longer than 180.0 seconds.. 2026-07-31 00:25:29 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/cctv-ornament-and-crime/ took longer than 180.0 seconds.. 2026-07-31 00:25:29 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/mtm-workshop-computer-assembled/ took longer than 180.0 seconds.. 2026-07-31 00:33:11 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:33:11 [scrapy.extensions.logstats] INFO: Crawled 23 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 00:33:11 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/alpha-short-trimmers/ took longer than 180.0 seconds.. 2026-07-31 00:33:11 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 2 times): User timeout caused connection failure. 2026-07-31 00:33:11 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 2 times): User timeout caused connection failure. 2026-07-31 00:33:11 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 2 times): User timeout caused connection failure. 2026-07-31 00:33:11 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 2 times): User timeout caused connection failure. 2026-07-31 00:33:11 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 2 times): User timeout caused connection failure. 2026-07-31 00:33:11 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 2 times): User timeout caused connection failure. 2026-07-31 00:33:11 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 2 times): User timeout caused connection failure. 2026-07-31 00:33:13 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:33:13 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:33:14 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:33:44 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:33:44 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 00:33:44 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:33:44 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/) 2026-07-31 00:45:42 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:54:17 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:59:01 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:59:02 [scrapy.extensions.logstats] INFO: Crawled 30 pages (at 7 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 00:59:20 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:59:43 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 00:59:58 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:04:49 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:04:49 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 2 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/alpha-short-trimmers/ took longer than 180.0 seconds.. 2026-07-31 01:04:49 [scrapy.downloadermiddlewares.retry] ERROR: Gave up retrying (failed 3 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/mtm-workshop-computer-assembled/ took longer than 180.0 seconds.. 2026-07-31 01:04:49 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/ryk-pgm-cards-tape/ took longer than 180.0 seconds.. 2026-07-31 01:04:49 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/ryk-pgm-cards-mixed/ took longer than 180.0 seconds.. 2026-07-31 01:04:49 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/coming-soon/ took longer than 180.0 seconds.. 2026-07-31 01:04:49 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/random-works-wonky/ took longer than 180.0 seconds.. 2026-07-31 01:04:49 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/thonk-synth-t01-vco-kit/ took longer than 180.0 seconds.. 2026-07-31 01:04:49 [scrapy.downloadermiddlewares.retry] DEBUG: Retrying (failed 1 times): User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/thonk-synth-t07-triple-mod-kit/ took longer than 180.0 seconds.. 2026-07-31 01:04:49 [scrapy.extensions.logstats] INFO: Crawled 30 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 01:04:49 [scrapy.core.scraper] ERROR: Error downloading Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 1693, in _inlineCallbacks result = context.run( File "/code/lib/python3.10/site-packages/twisted/python/failure.py", line 518, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/code/lib/python3.10/site-packages/scrapy/core/downloader/middleware.py", line 52, in process_request return (yield download_func(request=request, spider=spider)) File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/lib/python3.10/site-packages/scrapy/core/downloader/handlers/http11.py", line 398, in _cb_timeout raise TimeoutError(f"Getting {url} took longer than {timeout} seconds.") twisted.internet.error.TimeoutError: User timeout caused connection failure: Getting https://www.thonk.co.uk/shop/mtm-workshop-computer-assembled/ took longer than 180.0 seconds.. 2026-07-31 01:04:50 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:04:50 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:04:50 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:04:50 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:05:17 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:05:36 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:05:52 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:05:52 [scrapy.extensions.logstats] INFO: Crawled 34 pages (at 4 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 01:05:52 [scrapy.core.engine] INFO: Closing spider (closespider_timeout) 2026-07-31 01:05:53 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:05:53 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:05:53 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:05:53 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:05:53 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:05:53 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:05:53 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:05:53 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:06:02 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:06:13 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:06:23 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:06:33 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:06:43 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:06:53 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:07:04 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:07:14 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:07:14 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:07:14 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:07:14 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:07:14 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:07:14 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/3/) 2026-07-31 01:07:14 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:07:14 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:07:14 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://www.thonk.co.uk/shop/page/2/) 2026-07-31 01:07:14 [scrapy.extensions.logstats] INFO: Crawled 50 pages (at 16 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 01:07:26 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:07:39 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:07:49 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:07:59 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:08:08 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/3/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:08:16 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:08:26 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:08:34 [scrapy.core.scraper] ERROR: Spider error processing (referer: https://www.thonk.co.uk/shop/page/2/) Traceback (most recent call last): File "/code/lib/python3.10/site-packages/twisted/internet/defer.py", line 892, in _runCallbacks current.result = callback( # type: ignore[misc] File "/code/modularspiders/spiders/thonk.py", line 56, in parse_product loader.add_value("price", offer["priceSpecification"]["price"]) TypeError: list indices must be integers or slices, not str 2026-07-31 01:08:34 [scrapy.extensions.logstats] INFO: Crawled 50 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2026-07-31 01:08:34 [urllib3.connectionpool] DEBUG: Starting new HTTPS connection (1): wigglehunt.com:443 2026-07-31 01:08:34 [py.warnings] WARNING: /code/lib/python3.10/site-packages/urllib3/connectionpool.py:1045: InsecureRequestWarning: Unverified HTTPS request is being made to host 'wigglehunt.com'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings warnings.warn( 2026-07-31 01:08:35 [urllib3.connectionpool] DEBUG: https://wigglehunt.com:443 "GET /api/v1/_ingest-complete?store_code=thonk&batch_id=2531 HTTP/1.1" 200 15 2026-07-31 01:08:35 [scrapy.statscollectors] INFO: Dumping Scrapy stats: {'downloader/exception_count': 23, 'downloader/exception_type_count/twisted.internet.error.TimeoutError': 23, 'downloader/request_bytes': 23259, 'downloader/request_count': 73, 'downloader/request_method_count/GET': 73, 'downloader/response_bytes': 3514068, 'downloader/response_count': 50, 'downloader/response_status_count/200': 50, 'elapsed_time_seconds': 3795.27724, 'finish_reason': 'closespider_timeout', 'finish_time': datetime.datetime(2026, 7, 31, 1, 8, 35, 27810), 'httpcompression/response_bytes': 21875174, 'httpcompression/response_count': 50, 'log_count/DEBUG': 75, 'log_count/ERROR': 48, 'log_count/INFO': 19, 'log_count/WARNING': 2, 'memusage/max': 140308480, 'memusage/startup': 70062080, 'request_depth_max': 3, 'response_received_count': 50, 'retry/count': 22, 'retry/max_reached': 1, 'retry/reason_count/twisted.internet.error.TimeoutError': 22, 'robotstxt/request_count': 1, 'robotstxt/response_count': 1, 'robotstxt/response_status_count/200': 1, 'scheduler/dequeued': 72, 'scheduler/dequeued/memory': 72, 'scheduler/enqueued': 107, 'scheduler/enqueued/memory': 107, 'spider_exceptions/TypeError': 46, 'start_time': datetime.datetime(2026, 7, 31, 0, 5, 19, 750570)} 2026-07-31 01:08:35 [scrapy.core.engine] INFO: Spider closed (closespider_timeout)