Head
2026-08-05 05:01:37 [scrapy.utils.log] INFO: Scrapy 2.14.1 started (bot: event_scrapers)
2026-08-05 05:01:37 [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-05 05:01:37 [scrapy.crawler] DEBUG: Using AsyncCrawlerProcess
2026-08-05 05:01:37 [asyncio] DEBUG: Using selector: EpollSelector
2026-08-05 05:01:37 [scrapy.addons] INFO: Enabled addons:
[]
2026-08-05 05:01:38 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.asyncioreactor.AsyncioSelectorReactor
2026-08-05 05:01:38 [scrapy.utils.log] DEBUG: Using asyncio event loop: asyncio.unix_events._UnixSelectorEventLoop
2026-08-05 05:01:38 [scrapy.extensions.telnet] INFO: Telnet Password: 7d2f0824d5a77109
2026-08-05 05:01:38 [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-05 05:01:38 [scrapy.crawler] INFO: Overridden settings:
{'BOT_NAME': 'event_scrapers',
'FEED_EXPORT_ENCODING': 'utf-8',
'FEED_URI_PARAMS': <function _feed_uri_params at 0x71d569f2b4c0>,
'LOG_FILE': '/root/event-list-scraping/logs/event_scrapers/wilton_historical/f887d085907911f1b5d90050565fa5d9.log',
'NEWSPIDER_MODULE': 'event_scrapers.spiders',
'REQUEST_FINGERPRINTER_CLASS': 'scrapy_zyte_api.ScrapyZyteAPIRequestFingerprinter',
'SPIDER_MODULES': ['event_scrapers.spiders']}
2026-08-05 05:01:38 [scrapy_zyte_api.handler] INFO: Using a Zyte API key starting with 'ff9baec'
2026-08-05 05:01:38 [scrapy_zyte_api.handler] INFO: Using a Zyte API key starting with 'ff9baec'
2026-08-05 05:01:38 [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-05 05:01:38 [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-05 05:01:38 [scrapy.middleware] INFO: Enabled item pipelines:
['event_scrapers.pipelines.EventScrapersPipeline']
2026-08-05 05:01:38 [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-05 05:01:38 [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-05 05:01:38 [scrapy.core.engine] INFO: Spider opened
2026-08-05 05:01:38 [py.warnings] WARNING: /root/.venv/lib/python3.12/site-packages/scrapy/core/spidermw.py:490: ScrapyDeprecationWarning: event_scrapers.spiders.wilton_historical.ListingSpider 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-05 05:01:38 [wilton_historical] INFO: Sending scraped events to prod API
2026-08-05 05:01:38 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2026-08-05 05:01:38 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6024
2026-08-05 05:01:39 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://wiltonhistorical.org/wp-admin/admin-ajax.php?action=eventorganiser-fullcal&start=2026-11-01&end=2026-11-30&timeformat=g%3Ai%20a> (referer: None)
2026-08-05 05:01:40 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://wiltonhistorical.org/wp-admin/admin-ajax.php?action=eventorganiser-fullcal&start=2026-08-05&end=2026-08-31&timeformat=g%3Ai%20a> (referer: None)
2026-08-05 05:01:41 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://wiltonhistorical.org/events/event/2026-member-and-donor-cookout/> (referer: https://wiltonhistorical.org/public-programs/calendar/)
2026-08-05 05:01:41 [urllib3.connectionpool] DEBUG: Starting new HTTPS connection (1): norwalklist.org:443
2026-08-05 05:01:41 [urllib3.connectionpool] DEBUG: https://norwalklist.org:443 "POST /api/v1/raw-events/ HTTP/1.1" 500 145
2026-08-05 05:01:41 [wilton_historical] ERROR: API error 500:
<!doctype html>
<html lang="en">
<head>
<title>Server Error (500)</title>
</head>
<body>
<h1>Server Error (500)</h1><p></p>
</body>
</html>
2026-08-05 05:01:41 [scrapy.core.scraper] DEBUG: Scraped from <200 https://wiltonhistorical.org/events/event/2026-member-and-donor-cookout/>
{'event_url': 'https://wiltonhistorical.org/events/event/2026-member-and-donor-cookout/',
'platform': 'Wilton Historical',
'platform_hash': 'e6ba4eb2d2836cb1728e984e23ddba9a',
'raw_body': '<div class="articlebox lightgreybox">\n'
'<header class="entry-header"> <p id="breadcrumbs" '
'class="pancrumbs"><a '
'href="https://wiltonhistorical.org">Home</a> » <a '
'href="https://wiltonhistorical.org/calendar/">Calendar</a> » '
'2026 Member and Donor Cookout</p>\n'
'\t\t\t\t<h1 class="entry-title event-title">2026 Member and '
Tail
' \n'
'\n'
'\t\t\t</div><!-- .entry-content -->\n'
'\n'
'\t\t\t<footer class="entry-meta">\n'
'\t\t\tThis event was posted by <a '
'href="https://wiltonhistorical.org/author/elayman/">Emily '
'Layman</a>.\n'
'\t\t\t\t\t\t</footer><!-- .entry-meta -->\n'
'</div>'}
2026-08-05 05:01:43 [urllib3.connectionpool] DEBUG: Starting new HTTPS connection (1): norwalklist.org:443
2026-08-05 05:01:43 [urllib3.connectionpool] DEBUG: https://norwalklist.org:443 "POST /api/v1/raw-events/ HTTP/1.1" 500 145
2026-08-05 05:01:43 [wilton_historical] ERROR: API error 500:
<!doctype html>
<html lang="en">
<head>
<title>Server Error (500)</title>
</head>
<body>
<h1>Server Error (500)</h1><p></p>
</body>
</html>
2026-08-05 05:01:43 [scrapy.core.scraper] DEBUG: Scraped from <200 https://wiltonhistorical.org/events/event/emancipation-and-freedom-people-of-african-descent-and-the-american-revolution/>
{'event_url': 'https://wiltonhistorical.org/events/event/emancipation-and-freedom-people-of-african-descent-and-the-american-revolution/',
'platform': 'Wilton Historical',
'platform_hash': 'e6ba4eb2d2836cb1728e984e23ddba9a',
'raw_body': '<div class="articlebox lightgreybox">\n'
'<header class="entry-header"> <p id="breadcrumbs" '
'class="pancrumbs"><a '
'href="https://wiltonhistorical.org">Home</a> » <a '
'href="https://wiltonhistorical.org/calendar/">Calendar</a> » '
'Emancipation and Freedom: People of African Descent and the '
'American Revolution</p>\n'
'\t\t\t\t<h1 class="entry-title event-title">Emancipation and '
'Freedom: People of African Descent and the American '
'Revolution</h1>\n'
' \n'
'</header>\n'
'\t\n'
'\t\t\t<div class="entry-content">\n'
' \n'
' \n'
' \n'
'\t\t\t\t\t<p><strong><time itemprop="startDate" '
'datetime="2026-09-10T19:00:00-04:00">Thursday, September 10, '
'7:00pm</time> - <time itemprop="endDate" '
'datetime="2026-09-10T20:00:00-04:00">8:00pm</time></strong></p>\n'
' \t\t\t\t<!-- The content or the description of the '
'event-->\n'
'\t\t\t\t<p><img fetchpriority="high" decoding="async" '
'class="alignleft wp-image-9199 size-small" '
'src="https://wiltonhistorical.org/wp-content/uploads/2026/06/African-American-Soldiers-250x250.jpg" '
'alt="" width="250" height="250" '
'srcset="https://wiltonhistorical.org/wp-content/uploads/2026/06/African-American-Soldiers-250x250.jpg '
'250w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/06/African-American-Soldiers-300x300.jpg '
'300w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/06/African-American-Soldiers-710x710.jpg '
'710w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/06/African-American-Soldiers-150x150.jpg '
'150w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/06/African-American-Soldiers-768x768.jpg '
'768w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/06/African-American-Soldiers-450x450.jpg '
'450w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/06/African-American-Soldiers-30x30.jpg '
'30w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/06/African-American-Soldiers-140x140.jpg '
'140w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/06/African-American-Soldiers.jpg '
'957w" sizes="(max-width: 250px) 100vw, 250px">The historical '
'importance of the American War of Independence for Black '
'Americans is unquestionable. The number of Black men who served '
'in the military during this war is between 5,000 and 10,000. But '
'how do we remember and memorialize Black Patriots and History '
'Makers from that era? What lenses do we look through to see '
'them? What narrative structure do we use to talk about the past '
'they experienced? What parameters do we use for framing that '
'narrative? And how does it relate to the more well-known '
'narrative? These are some of the questions that will be '
'addressed in this presentation.</p>\n'
'<hr>\n'
'<p><img decoding="async" class="wp-image-9193 size-headshot '
'alignright" '
'src="https://wiltonhistorical.org/wp-content/uploads/2026/06/new-photo-175x225.jpeg" '
'alt="" width="175" height="225" '
'srcset="https://wiltonhistorical.org/wp-content/uploads/2026/06/new-photo-175x225.jpeg '
'175w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/06/new-photo-108x140.jpeg '
'108w" sizes="(max-width: 175px) 100vw, 175px"></p>\n'
'<h4>About Robert Bellinger</h4>\n'
'<p>Robert Bellinger is a public historian with a Ph.D. in '
'history from Boston College. As the proprietor of Righting '
'Histories, Dr. Bellinger engages in projects that involve '
'research andinterpretation of African American history, local '
'histories, and historic sites.</p>\n'
'<p>Dr. Bellinger has been engaged as a researcher, advisor, or '
'consultant on several public history projects including the '
'National Park Service project “The Experience of Africans During '
'the American Revolution”; the development of a Black History '
'Trail in Concord, MA; “Harvesting Heritage” an upcoming exhibit '
'at South Carolina State Museum; and “Conversations of Freedom,” '
'the 250th anniversary exhibit at Middleton Place, Charleston, '
'South Carolina.</p>\n'
'<p>In 2021 Dr. Bellinger founded the African Seed Exchange (ASÉ) '
'which documents the introduction of African food crops into '
'North America by Africans and African Americans in South '
'Carolina from the 17th through the 19th centuries. Currently Dr. '
'Bellinger is completing a manuscript on the history of the Black '
'residents of Lexington, Massachusetts, 1690-1820. Working with '
'the Lexington History Museums this text will help expand the '
'interpretation of the history of this Massachusetts '
'community.</p>\n'
'<p>Dr. Bellinger serves on the boards of the Robbins House, the '
'Shirley-Eustis House, Rediscover Mapledale, the Slave Legacy '
'History Coalition, Lexington History Museums, and Middleton '
'Place in Charleston, South Carolina. Dr. Bellinger is a member '
'of the Sons of the American Revolution, the Massachusetts '
'Historical Society, the Colonial Society of Massachusetts, and '
'the African America Historical and Genealogical Society.</p>\n'
'<h4>The talk will be held virtually on Thursday, September 10, '
'at 7:00 p.m.</h4>\n'
'<h4>The event is free for Historical Society members. For '
'non-members, there is a $10.00 fee.</h4>\n'
'<p><noscript><a '
'href="https://secure.lglforms.com/form_engine/s/QAFwfKwKlHJFSiphqOpywg">Fill '
'out my LGL Form!</a><br>\n'
'</noscript><br>\n'
'<script type="text/javascript" '
'src="https://secure.lglforms.com/form_engine/s/ypJsXqR_ziHywontbBOrRQ.js"></script><noscript><a '
'href="https://secure.lglforms.com/form_engine/s/ypJsXqR_ziHywontbBOrRQ">Fill '
'out my LGL Form!</a><br>\n'
'</noscript></p>\n'
'<h4 style="text-align: center;">This event is sponsored by <img '
'decoding="async" class="alignnone wp-image-8990 aligncenter" '
'style="font-size: 1rem;" '
'src="https://wiltonhistorical.org/wp-content/uploads/2026/03/ASML-Homepage-300x171.png" '
'alt="" width="89" height="51" '
'srcset="https://wiltonhistorical.org/wp-content/uploads/2026/03/ASML-Homepage-300x171.png '
'300w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/03/ASML-Homepage-710x400.png '
'710w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/03/ASML-Homepage-768x439.png '
'768w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/03/ASML-Homepage-250x143.png '
'250w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/03/ASML-Homepage-450x257.png '
'450w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/03/ASML-Homepage-140x80.png '
'140w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/03/ASML-Homepage-1000x571.png '
'1000w, '
'https://wiltonhistorical.org/wp-content/uploads/2026/03/ASML-Homepage.png '
'1400w" sizes="(max-width: 89px) 100vw, 89px"></h4>\n'
'\t\n'
' \n'
' \n'
'\n'
'\t\t\t</div><!-- .entry-content -->\n'
'\n'
'\t\t\t<footer class="entry-meta">\n'
'\t\t\tThis event was posted in <a '
'href="https://wiltonhistorical.org/events/category/for-adults/" '
'rel="tag">For Adults</a> by <a '
'href="https://wiltonhistorical.org/author/elayman/">Emily '
'Layman</a>.\n'
'\t\t\t\t\t\t</footer><!-- .entry-meta -->\n'
'</div>'}
2026-08-05 05:01:43 [scrapy.core.engine] INFO: Closing spider (finished)
2026-08-05 05:01:43 [scrapy.extensions.feedexport] INFO: Stored csv feed (5 items) in: output/2026/08/05/wilton_historical.csv
2026-08-05 05:01:43 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 5279,
'downloader/request_count': 10,
'downloader/request_method_count/GET': 10,
'downloader/response_bytes': 86973,
'downloader/response_count': 10,
'downloader/response_status_count/200': 10,
'elapsed_time_seconds': 5.376136,
'feedexport/success_count/FileFeedStorage': 1,
'finish_reason': 'finished',
'finish_time': datetime.datetime(2026, 8, 5, 3, 1, 43, 524535, tzinfo=datetime.timezone.utc),
'httpcompression/response_bytes': 336064,
'httpcompression/response_count': 10,
'item_scraped_count': 5,
'items_per_minute': 60.0,
'log_count/DEBUG': 25,
'log_count/ERROR': 5,
'log_count/INFO': 3,
'memusage/max': 99893248,
'memusage/startup': 99893248,
'request_depth_max': 1,
'response_received_count': 10,
'responses_per_minute': 120.0,
'scheduler/dequeued': 10,
'scheduler/dequeued/memory': 10,
'scheduler/enqueued': 10,
'scheduler/enqueued/memory': 10,
'start_time': datetime.datetime(2026, 8, 5, 3, 1, 38, 148399, tzinfo=datetime.timezone.utc)}
2026-08-05 05:01:43 [scrapy.core.engine] INFO: Spider closed (finished)