Head
2026-08-11 17:20:28 [scrapy.utils.log] INFO: Scrapy 2.14.1 started (bot: event_scrapers)
2026-08-11 17:20:28 [scrapy.utils.log] INFO: Versions:
{'lxml': '6.0.2',
'libxml2': '2.14.6',
'cssselect': '1.3.0',
'parsel': '1.10.0',
'w3lib': '2.0.0',
'Twisted': '25.5.0',
'Python': '3.12.3 (main, Jun 19 2026, 12:46:00) [GCC 13.3.0]',
'pyOpenSSL': '25.3.0 (OpenSSL 3.5.4 30 Sep 2025)',
'cryptography': '46.0.3',
'Platform': 'Linux-6.8.0-90-generic-x86_64-with-glibc2.39'}
2026-08-11 17:20:28 [scrapy.crawler] DEBUG: Using AsyncCrawlerProcess
2026-08-11 17:20:28 [asyncio] DEBUG: Using selector: EpollSelector
2026-08-11 17:20:28 [scrapy.addons] INFO: Enabled addons:
[]
2026-08-11 17:20:28 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.asyncioreactor.AsyncioSelectorReactor
2026-08-11 17:20:28 [scrapy.utils.log] DEBUG: Using asyncio event loop: asyncio.unix_events._UnixSelectorEventLoop
2026-08-11 17:20:28 [scrapy.extensions.telnet] INFO: Telnet Password: 62dafb4cbe49d768
2026-08-11 17:20:28 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
'scrapy.extensions.logcount.LogCount',
'scrapy.extensions.telnet.TelnetConsole',
'scrapy.extensions.memusage.MemoryUsage',
'scrapy.extensions.feedexport.FeedExporter',
'scrapy.extensions.logstats.LogStats']
2026-08-11 17:20:28 [scrapy.crawler] INFO: Overridden settings:
{'BOT_NAME': 'event_scrapers',
'FEED_EXPORT_ENCODING': 'utf-8',
'FEED_URI_PARAMS': <function _feed_uri_params at 0x779b6ef374c0>,
'LOG_FILE': '/root/event-list-scraping/logs/event_scrapers/fair_field_theatre/2c55a7ca959811f1849e0050565fa5d9.log',
'NEWSPIDER_MODULE': 'event_scrapers.spiders',
'REQUEST_FINGERPRINTER_CLASS': 'scrapy_zyte_api.ScrapyZyteAPIRequestFingerprinter',
'SPIDER_MODULES': ['event_scrapers.spiders']}
2026-08-11 17:20:28 [scrapy_zyte_api.handler] INFO: Using a Zyte API key starting with 'ff9baec'
2026-08-11 17:20:28 [scrapy_zyte_api.handler] INFO: Using a Zyte API key starting with 'ff9baec'
2026-08-11 17:20:28 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.offsite.OffsiteMiddleware',
'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_zyte_api.ScrapyZyteAPIDownloaderMiddleware',
'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
'scrapy.downloadermiddlewares.stats.DownloaderStats']
2026-08-11 17:20:28 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.start.StartSpiderMiddleware',
'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
'scrapy_zyte_api.ScrapyZyteAPISpiderMiddleware',
'scrapy.spidermiddlewares.referer.RefererMiddleware',
'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
'scrapy.spidermiddlewares.depth.DepthMiddleware',
'scrapy_zyte_api.ScrapyZyteAPIRefererSpiderMiddleware']
2026-08-11 17:20:28 [scrapy.middleware] INFO: Enabled item pipelines:
['event_scrapers.pipelines.EventScrapersPipeline']
2026-08-11 17:20:28 [py.warnings] WARNING: /root/.venv/lib/python3.12/site-packages/scrapy/pipelines/__init__.py:41: ScrapyDeprecationWarning: EventScrapersPipeline.open_spider() requires a spider argument, this is deprecated and the argument will not be passed in future Scrapy versions. If you need to access the spider instance you can save the crawler instance passed to from_crawler() and use its spider attribute.
self._check_mw_method_spider_arg(pipe.open_spider)
2026-08-11 17:20:28 [py.warnings] WARNING: /root/.venv/lib/python3.12/site-packages/scrapy/pipelines/__init__.py:47: ScrapyDeprecationWarning: EventScrapersPipeline.process_item() requires a spider argument, this is deprecated and the argument will not be passed in future Scrapy versions. If you need to access the spider instance you can save the crawler instance passed to from_crawler() and use its spider attribute.
self._check_mw_method_spider_arg(pipe.process_item)
2026-08-11 17:20:28 [scrapy.core.engine] INFO: Spider opened
2026-08-11 17:20:28 [py.warnings] WARNING: /root/.venv/lib/python3.12/site-packages/scrapy/core/spidermw.py:490: ScrapyDeprecationWarning: event_scrapers.spiders.fair_field_theatre.FairFieldTheatreSpider defines the deprecated start_requests() method. start_requests() has been deprecated in favor of a new method, start(), to support asynchronous code execution. start_requests() will stop being called in a future version of Scrapy. If you use Scrapy 2.13 or higher only, replace start_requests() with start(); note that start() is a coroutine (async def). If you need to maintain compatibility with lower Scrapy versions, when overriding start_requests() in a spider class, override start() as well; you can use super() to reuse the inherited start() implementation without copy-pasting. See the release notes of Scrapy 2.13 for details: https://docs.scrapy.org/en/2.13/news.html
warn(
2026-08-11 17:20:28 [fair_field_theatre] INFO: Sending scraped events to prod API
2026-08-11 17:20:28 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2026-08-11 17:20:28 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
2026-08-11 17:20:30 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://fairfieldtheatre.org/calendar/> (referer: None)
2026-08-11 17:20:30 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://fairfieldtheatre.org/events/stageone/caravan-of-thieves_e684> (referer: https://fairfieldtheatre.org/calendar/)
2026-08-11 17:20:30 [urllib3.connectionpool] DEBUG: Starting new HTTPS connection (1): norwalklist.org:443
2026-08-11 17:20:30 [urllib3.connectionpool] DEBUG: https://norwalklist.org:443 "POST /api/v1/raw-events/ HTTP/1.1" 201 13521
2026-08-11 17:20:30 [scrapy.core.scraper] DEBUG: Scraped from <200 https://fairfieldtheatre.org/events/stageone/caravan-of-thieves_e684>
{'event_url': 'https://fairfieldtheatre.org/events/stageone/caravan-of-thieves_e684',
'platform': 'Fair Field Theatre',
'platform_hash': 'c0ddd2fbc18dada0acccb68b2560c602',
'raw_body': '<div class="bg-white margin-y-4">\n'
' <div class="grid-container">\n'
' <div class="grid-row">\n'
' <div class="grid-col-12 tablet:grid-col-6 '
'margin-bottom-2">\n'
' <div class="font-body-lg '
'line-height-body-4 font-override-std ftc-blue ftc-red '
'display-flex flex-align-start text-ls-1 flex-column '
'font-override-std">\n'
' Saturday | December 19, 2026\n'
' <br>\n'
' <span class="margin-0 font-body-xl '
'ftc-red font-override-std">on <strong>StageOne</strong></span>\n'
' </div>\n'
' </div>\n'
' <div class="grid-col-12 tablet:grid-col-4 '
'tablet:grid-offset-2 display-flex flex-column">\n'
' \n'
' \n'
Tail
' <div class="font-body-3xs '
'font-override-std margin-bottom-1 text-gray-50 text-italic '
'margin-top-1">Times subject to change</div>\n'
' </div>\n'
' \n'
' </div>\n'
' \n'
' \n'
' \n'
' \n'
' </div>\n'
' </div><div class="bg-gray-5 padding-y-3">\n'
' <div class="grid-container">\n'
' <div class="grid-row margin-top-2 '
'hp-events-header flex-column">\n'
' <div class="font-override-std ftc-blue '
'font-body-3xl text-light text-left">Description</div>\n'
' <div class="display-flex ftc-red text-bold '
'font-body-2xs flex-align-center text-uppercase margin-top-1 '
'font-override-std">\n'
' <img '
'src="https://ftc-web-prod-static.fairfieldtheatre.org/ftc_templates/assets/ftc_favicon_2023site.ico" '
'class="width-2 margin-right-05">Study Up\n'
' </div>\n'
' </div>\n'
' \n'
' <div class="grid-row margin-top-4">\n'
' <div class="grid-col-12 margin-bottom-205">\n'
' <a href="" class="font-body-xl text-left '
'text-uppercase text-no-underline font-override-cond ftc-blue '
'fw-800">James Hunter Six</a>\n'
' \n'
' <div class="display-flex '
'margin-top-105">\n'
' \n'
' <a '
'href="https://www.jameshuntermusic.com/news.html" '
'target="_blank"><img '
'src="https://ftc-web-prod-media.fairfieldtheatre.org/globe_dark_copy.png" '
'class="height-2 margin-right-3"></a>\n'
' \n'
' <a '
'href="https://www.facebook.com/TheJamesHunterSix" '
'target="_blank"><img '
'src="https://ftc-web-prod-media.fairfieldtheatre.org/facebook_dark.png" '
'class="height-2 margin-right-3"></a>\n'
' \n'
' <a '
'href="https://www.instagram.com/jameshuntersix/" '
'target="_blank"><img '
'src="https://ftc-web-prod-media.fairfieldtheatre.org/instagram_dark.png" '
'class="height-2 margin-right-3"></a>\n'
' \n'
' </div>\n'
' \n'
' </div>\n'
' \n'
' <div class="grid-col-12 tablet:grid-col-6 '
'margin-bottom-2 tablet:margin-bottom-0">\n'
' <div class="line-height-body-3 '
'text-black font-heading-md font-family-sans '
'font-override-std"><p>GRAMMY-nominated British soul singer James '
'Hunter has spent more than three decades perfecting a sound that '
'feels both timeless and alive. Fronting The James Hunter Six, '
'Hunter’s gritty, golden-throated vocals glide over swinging '
'R&B grooves, twin saxophones, and Hammond B3 organ with the '
'effortless cool of a late-night soul revue. If you love the '
'sounds of Sam Cooke, Wilson Pickett, Jackie Wilson, or Van '
'Morrison, this is music that hits straight from the heart.</p>\n'
'<p>Hunter’s latest album, <em>Off The Fence</em>, marks his '
'debut on Dan Auerbach’s Easy Eye Sound label and features a '
'special duet with longtime friend and collaborator Van Morrison '
'on the jump-blues burner “Ain’t That A Trip.” Praised by '
'<em>MOJO</em> as “The United Kingdom’s Greatest Soul Singer,” '
'Hunter has shared stages with legends including Aretha Franklin, '
'BB King, Etta James, Mavis Staples, Bonnie Raitt, and Van '
'Morrison while building a devoted international following of his '
'own.</p>\n'
'<p>Whether delivering uptempo rhythm & blues or candlelit '
'soul ballads, The James Hunter Six channels the spirit of '
'classic R&B with wit, warmth, and undeniable groove. In the '
'words of Van Morrison himself, Hunter remains “one of the best '
'voices and best kept secrets in British R&B.”</p></div>\n'
' </div>\n'
' \n'
' <div class="grid-col-12 tablet:grid-col-5 '
'tablet:grid-offset-1 ">\n'
' \n'
' <iframe '
'src="https://www.youtube.com/embed/vcYlWUBei3Q?si=B5-cA2n4WvwplOwM" '
'frameborder="0" allow="accelerometer; autoplay; clipboard-write; '
'encrypted-media; gyroscope; picture-in-picture; web-share" '
'referrerpolicy="strict-origin-when-cross-origin" allowfullscreen '
'class="add-aspect-16x9 width-full margin-bottom-2"></iframe>\n'
' \n'
' </div>\n'
' </div>\n'
' \n'
' \n'
' \n'
' <div class="grid-row margin-top-4">\n'
' <div class="grid-col-12 margin-bottom-205">\n'
' <a href="" class="font-body-xl text-left '
'text-uppercase text-no-underline font-override-cond ftc-blue '
'fw-800">Mathias Lattin</a>\n'
' \n'
' <div class="display-flex '
'margin-top-105">\n'
' \n'
' <a '
'href="https://www.mathiaslattin.com/" target="_blank"><img '
'src="https://ftc-web-prod-media.fairfieldtheatre.org/globe_dark_copy.png" '
'class="height-2 margin-right-3"></a>\n'
' \n'
' <a '
'href="https://www.instagram.com/mathiaslattin/" '
'target="_blank"><img '
'src="https://ftc-web-prod-media.fairfieldtheatre.org/instagram_dark.png" '
'class="height-2 margin-right-3"></a>\n'
' \n'
' <a '
'href="https://www.facebook.com/mathiaslattin/?ref=bookmarks" '
'target="_blank"><img '
'src="https://ftc-web-prod-media.fairfieldtheatre.org/facebook_dark.png" '
'class="height-2 margin-right-3"></a>\n'
' \n'
' </div>\n'
' \n'
' </div>\n'
' \n'
' <div class="grid-col-12 tablet:grid-col-6 '
'margin-bottom-2 tablet:margin-bottom-0">\n'
' <div class="line-height-body-3 '
'text-black font-heading-md font-family-sans '
'font-override-std"><p>Mathias Lattin won the 2023 International '
'Blues Challenge and Best Guitarist at the tender of 20-years '
'old; conceivably making him the youngest to win both.</p>\n'
'<p>The grandson of NBA Hall of Famer, David “Big Daddy” Lattin, '
'he displays his talent on the stage not the basketball court. He '
'is a 2020 graduate of Houston’s acclaimed Kinder High School of '
'Performing and Visual Arts. He began his foray into the Houston '
'Blues scene when he was 12 years old. Jonn Del Toro Richardson '
'invited him to attend the weekly Blues jam he hosted at The Big '
'Easy. He garnered national attention when he joined the Keeshea '
'Pratt Band (IBC 2018) in 2020. After touring with the Keeshea '
'Pratt Band and joining Brazilian Bluesman Cris Crochemore for '
'the 2022 IBC, Mathias decided to take a shot at the IBC as front '
'man.</p>\n'
'<p>UP NEXT is the debut release of the emerging Texas musician. '
'He wrote and produced the project which displays some of '
'Lattin’s musical influences. The wealth and breadth of great '
'music/musicians in the Houston music scene had a major impact on '
'the 21-year-old Lattin. UP NEXT is proof that the music is alive '
'and in capable hands.</p></div>\n'
' </div>\n'
' \n'
' <div class="grid-col-12 tablet:grid-col-5 '
'tablet:grid-offset-1 ">\n'
' \n'
' \n'
' <img '
'src="https://ftc-web-prod-media.fairfieldtheatre.org/Mathias_Lattin_-_Approved_Image_3.JPG.8000x4500_q85_box-0%2C0%2C4176%2C2351_crop_detail.jpg">\n'
' \n'
' \n'
' </div>\n'
' </div>\n'
' \n'
' </div>\n'
' </div>'}
2026-08-11 17:20:39 [scrapy.core.engine] INFO: Closing spider (finished)
2026-08-11 17:20:39 [scrapy.extensions.feedexport] INFO: Stored csv feed (65 items) in: output/2026/08/11/fair_field_theatre.csv
2026-08-11 17:20:39 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 20919,
'downloader/request_count': 66,
'downloader/request_method_count/GET': 66,
'downloader/response_bytes': 980684,
'downloader/response_count': 66,
'downloader/response_status_count/200': 66,
'elapsed_time_seconds': 10.506415,
'feedexport/success_count/FileFeedStorage': 1,
'finish_reason': 'finished',
'finish_time': datetime.datetime(2026, 8, 11, 15, 20, 39, 54007, tzinfo=datetime.timezone.utc),
'httpcompression/response_bytes': 3588152,
'httpcompression/response_count': 66,
'item_scraped_count': 65,
'items_per_minute': 390.0,
'log_count/DEBUG': 261,
'log_count/ERROR': 6,
'log_count/INFO': 3,
'memusage/max': 99631104,
'memusage/startup': 99631104,
'request_depth_max': 1,
'response_received_count': 66,
'responses_per_minute': 396.0,
'scheduler/dequeued': 66,
'scheduler/dequeued/memory': 66,
'scheduler/enqueued': 66,
'scheduler/enqueued/memory': 66,
'start_time': datetime.datetime(2026, 8, 11, 15, 20, 28, 547592, tzinfo=datetime.timezone.utc)}
2026-08-11 17:20:39 [scrapy.core.engine] INFO: Spider closed (finished)