Head
2026-06-16 19:21:39 [scrapy.utils.log] INFO: Scrapy 2.14.1 started (bot: event_scrapers)
2026-06-16 19:21:39 [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, Mar 23 2026, 19:04:32) [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-06-16 19:21:39 [scrapy.crawler] DEBUG: Using AsyncCrawlerProcess
2026-06-16 19:21:39 [asyncio] DEBUG: Using selector: EpollSelector
2026-06-16 19:21:39 [scrapy.addons] INFO: Enabled addons:
[]
2026-06-16 19:21:40 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.asyncioreactor.AsyncioSelectorReactor
2026-06-16 19:21:40 [scrapy.utils.log] DEBUG: Using asyncio event loop: asyncio.unix_events._UnixSelectorEventLoop
2026-06-16 19:21:40 [scrapy.extensions.telnet] INFO: Telnet Password: 98957efd77390a1b
2026-06-16 19:21:40 [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-06-16 19:21:40 [scrapy.crawler] INFO: Overridden settings:
{'BOT_NAME': 'event_scrapers',
'FEED_EXPORT_ENCODING': 'utf-8',
'FEED_URI_PARAMS': <function _feed_uri_params at 0x70a4b91f0540>,
'LOG_FILE': '/root/event-list-scraping/logs/event_scrapers/wilton_library/d449d3c169a711f1ba5a0050565fa5d9.log',
'NEWSPIDER_MODULE': 'event_scrapers.spiders',
'REQUEST_FINGERPRINTER_CLASS': 'scrapy_zyte_api.ScrapyZyteAPIRequestFingerprinter',
'SPIDER_MODULES': ['event_scrapers.spiders']}
2026-06-16 19:21:40 [scrapy_zyte_api.handler] INFO: Using a Zyte API key starting with 'ff9baec'
2026-06-16 19:21:40 [scrapy_zyte_api.handler] INFO: Using a Zyte API key starting with 'ff9baec'
2026-06-16 19:21:40 [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-06-16 19:21:40 [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-06-16 19:21:40 [scrapy.middleware] INFO: Enabled item pipelines:
['event_scrapers.pipelines.EventScrapersPipeline']
2026-06-16 19:21:40 [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-06-16 19:21:40 [scrapy.core.engine] INFO: Spider opened
2026-06-16 19:21:40 [py.warnings] WARNING: /root/.venv/lib/python3.12/site-packages/scrapy/core/spidermw.py:490: ScrapyDeprecationWarning: event_scrapers.spiders.wilton_library.MocaWestSpider 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-06-16 19:21:40 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2026-06-16 19:21:40 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
2026-06-16 19:21:42 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.wiltonlibrary.org/events/> (referer: None)
2026-06-16 19:21:44 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://wilton.librarycalendar.com/event/juneteenth-49463> (referer: https://www.wiltonlibrary.org/)
2026-06-16 19:21:44 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://wilton.librarycalendar.com/event/juneteenth-observed-49464> (referer: https://www.wiltonlibrary.org/)
2026-06-16 19:21:44 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://wilton.librarycalendar.com/event/new-years-day-49474> (referer: https://www.wiltonlibrary.org/)
2026-06-16 19:21:44 [urllib3.connectionpool] DEBUG: Starting new HTTP connection (1): 144.91.120.141:80
2026-06-16 19:21:44 [urllib3.connectionpool] DEBUG: http://144.91.120.141:80 "POST /api/v1/raw-events/ HTTP/1.1" 201 10447
2026-06-16 19:21:44 [scrapy.core.scraper] DEBUG: Scraped from <200 https://wilton.librarycalendar.com/event/juneteenth-49463>
{'event_url': 'https://wilton.librarycalendar.com/event/juneteenth-49463',
'platform': 'Wilton Library',
'platform_hash': 'ed004594c5f221d0f293b66d08e0ee43',
'raw_body': '<div class="dialog-off-canvas-main-canvas" '
'data-off-canvas-main-canvas="">\n'
'<header class="header">\n'
'<div class="container main-container">\n'
'<div class="row">\n'
'<div class="col-12 col-lg-6 branding-col">\n'
'<div>\n'
'<div class="block block-system block-system-branding-block" '
'id="block-calendar-theme-site-branding">\n'
'<a class="site-logo" href="https://www.wiltonlibrary.org/" '
'rel="home">\n'
'<img alt="Homepage of Wilton Library" fetchpriority="high" '
'src="/sites/default/files/Asset%202.png"/>\n'
'</a>\n'
'</div>\n'
'</div>\n'
'</div>\n'
'<div class="col-12 col-lg-6 header-content-col">\n'
'<div class="header-content-container">\n'
'<div class="block block-lc-branch-select '
'block-lc-branch-select-block" '
Tail
'<nav aria-labelledby="block-calendar-theme-main-menu-heading" '
'class="navbar navbar-expand-lg" '
'id="block-calendar-theme-main-menu" role="navigation">\n'
'<div class="container-fluid px-lg-0">\n'
'<h2 class="visually-hidden" '
'id="block-calendar-theme-main-menu-heading">Main '
'navigation</h2>\n'
'<button aria-controls="block-calendar-theme-main-menu-collapse" '
'aria-expanded="false" class="navbar-toggler" '
'data-bs-target="#block-calendar-theme-main-menu-collapse" '
'data-bs-toggle="collapse" type="button">\n'
'<i class="fas fa-bars"></i>\n'
'<span class="visually-hidden">\n'
' Toggle </span>\n'
'\n'
' Main Menu </button>\n'
'<div class="collapse navbar-collapse mt-2 mt-lg-0" '
'id="block-calendar-theme-main-menu-collapse">\n'
'<ul class="nav navbar-nav">\n'
'<li class="nav-item">\n'
'<a class="nav-link" '
'href="https://www.wiltonlibrary.org/">Library Website</a>\n'
'</li>\n'
'<li class="nav-item">\n'
'<a class="nav-link" data-drupal-link-system-path="events" '
'href="/events">Events Calendar</a>\n'
'</li>\n'
'<li class="nav-item">\n'
'<a class="nav-link" '
'href="https://www.wiltonlibrary.org/studyrooms">Study Rooms</a>\n'
'</li>\n'
'<li class="nav-item">\n'
'<a class="nav-link" data-drupal-link-system-path="node/1" '
'href="/reserve-room">Reserve a Room</a>\n'
'</li>\n'
'<li class="nav-item">\n'
'<a class="nav-link" '
'href="https://wilton.librarycalendar.com/reserve-room/bloomberg-terminal">Bloomberg '
'Terminal</a>\n'
'</li>\n'
'</ul>\n'
'</div>\n'
'</div>\n'
'</nav>\n'
'<a id="block-calendar-theme-main-menu-skip-link" '
'tabindex="-1"></a>\n'
'</div>\n'
'</div>\n'
'</header>\n'
'<main class="content-container container main-container" '
'role="main">\n'
'<a id="main-content" tabindex="-1"></a>\n'
'<div>\n'
'<div class="hidden" data-drupal-messages-fallback=""></div>\n'
'<div class="block block-system block-system-breadcrumb-block" '
'id="block-calendar-theme-breadcrumbs">\n'
'<nav aria-label="Breadcrumb" role="navigation">\n'
'<ol class="breadcrumb">\n'
'<li class="breadcrumb-item">\n'
'<a href="/">Home</a>\n'
'</li>\n'
'</ol>\n'
'</nav>\n'
'</div>\n'
'<div class="block block-core block-page-title-block" '
'id="block-calendar-theme-page-title">\n'
'<h1 class="mb-4">\n'
'<span>Early Closing for Annual Meeting</span>\n'
'</h1>\n'
'</div>\n'
'<div class="block block-system block-system-main-block" '
'id="block-calendar-theme-content">\n'
'<article class="lc-event lc-event--full node '
'node--type-lc-closing node--promoted node--view-mode-full">\n'
'<div class="lc-event__menu-tasks"><div class="lc-menu-tasks"> '
'<h2 class="visually-hidden">Primary tabs</h2>\n'
'<ul class="list-inline"><li class="list-inline-item"><a '
'class="button button--primary btn-sm" '
'data-drupal-link-system-path="events/upcoming" '
'href="/events/upcoming">Upcoming</a></li>\n'
'<li class="list-inline-item"><a class="button button--primary '
'btn-sm" data-drupal-link-system-path="events/list" '
'href="/events/list">List</a></li>\n'
'<li class="list-inline-item"><a class="button button--primary '
'btn-sm" data-drupal-link-system-path="events/month/2026/06" '
'href="/events/month/2026/06">Month</a></li>\n'
'<li class="list-inline-item"><a class="button button--primary '
'btn-sm" data-drupal-link-system-path="events/week/2026/06/17" '
'href="/events/week/2026/06/17">Week</a></li>\n'
'<li class="list-inline-item"><a class="button button--primary '
'btn-sm" data-drupal-link-system-path="events/day/2026/06/17" '
'href="/events/day/2026/06/17">Day</a></li>\n'
'</ul>\n'
'</div>\n'
'</div>\n'
'<div class="node__content lc-event-wrapper">\n'
'<aside class="lc-event-sidebar lc-event-sidebar--first">\n'
'<div class="lc-event-details">\n'
'<div aria-hidden="true" class="lc-date-icon">\n'
'<span class="lc-date-icon__item lc-date-icon__item--month">\n'
' Jun\n'
' </span>\n'
'<span class="lc-date-icon__item lc-date-icon__item--day">\n'
' 17\n'
' </span>\n'
'<span class="lc-date-icon__item lc-date-icon__item--year">\n'
' 2026\n'
' </span>\n'
'<span class="lc-date-icon__item lc-date-icon__item--day-name">\n'
' Wed\n'
' </span>\n'
'</div>\n'
'<div class="lc-event-info">\n'
'<h3 class="lc-event-subtitle lc-event-info-item '
'lc-event-info-item--room lc-closing-color">\n'
' Wilton Library\n'
' </h3>\n'
'<div class="lc-event-info__item lc-event-info__item--date '
'visually-hidden">\n'
' Wednesday, June 17, 2026\n'
' </div>\n'
'<div class="lc-event-info-item lc-event-info-item--time">\n'
' 5:00pm–8:00pm\n'
' </div>\n'
'<div class="lc-event__key lc-event__key--closing">\n'
'<strong>Closing</strong>\n'
'</div>\n'
'</div>\n'
'</div>\n'
'</aside>\n'
'<section class="lc-event-content">\n'
'<h2 class="lc-event-subtitle lc-closing-color">Description</h2>\n'
'</section>\n'
'</div>\n'
'</article>\n'
'</div>\n'
'</div>\n'
'</main>\n'
'<footer class="footer" role="contentinfo">\n'
'<div class="container">\n'
'<div class="footer-row">\n'
'<div class="row">\n'
'<div class="col-md block block-block-content '
'block-block-contenta43113a9-f121-4179-b856-f3fce79c7ddb" '
'id="block-calendar-theme-wlalcanalytics">\n'
'<div class="field field-container field--name-body '
'field--type-text-with-summary field--label-hidden '
'field-item"><!-- Google tag (gtag.js) -->\n'
'<script async="" '
'src="https://www.googletagmanager.com/gtag/js?id=G-8M9CC7FYVD"></script>\n'
'<script>\n'
' window.dataLayer = window.dataLayer || [];\n'
' function gtag(){dataLayer.push(arguments);}\n'
" gtag('js', new Date());\n"
'\n'
" gtag('config', 'G-8M9CC7FYVD');\n"
'</script>\n'
'</div>\n'
'</div>\n'
'</div>\n'
'</div>\n'
'<a aria-label="Back To Top" class="btn back-to-top" href="#" '
'title="Back To Top">\n'
'<i class="fas fa-chevron-up fa-fw"></i>\n'
'<span class="d-block d-lg-none ml-3 ml-lg-0">Back To Top</span>\n'
'</a>\n'
'</div>\n'
'</footer>\n'
'</div>'}
2026-06-16 19:22:14 [scrapy.core.engine] INFO: Closing spider (finished)
2026-06-16 19:22:14 [scrapy.extensions.feedexport] INFO: Stored csv feed (190 items) in: output/2026/06/16/wilton_library.csv
2026-06-16 19:22:14 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 58868,
'downloader/request_count': 191,
'downloader/request_method_count/GET': 191,
'downloader/response_bytes': 1582319,
'downloader/response_count': 191,
'downloader/response_status_count/200': 191,
'elapsed_time_seconds': 34.260585,
'feedexport/success_count/FileFeedStorage': 1,
'finish_reason': 'finished',
'finish_time': datetime.datetime(2026, 6, 16, 17, 22, 14, 644252, tzinfo=datetime.timezone.utc),
'httpcompression/response_bytes': 5984860,
'httpcompression/response_count': 191,
'item_scraped_count': 190,
'items_per_minute': 335.29411764705884,
'log_count/DEBUG': 761,
'log_count/ERROR': 3,
'log_count/INFO': 3,
'memusage/max': 93036544,
'memusage/startup': 93036544,
'request_depth_max': 1,
'response_received_count': 191,
'responses_per_minute': 337.05882352941177,
'scheduler/dequeued': 191,
'scheduler/dequeued/memory': 191,
'scheduler/enqueued': 191,
'scheduler/enqueued/memory': 191,
'start_time': datetime.datetime(2026, 6, 16, 17, 21, 40, 383667, tzinfo=datetime.timezone.utc)}
2026-06-16 19:22:14 [scrapy.core.engine] INFO: Spider closed (finished)