• 'pip install logparser' on host '127.0.0.1:6800' and run command 'logparser'. Or wait until LogParser parses the log.

PROJECT (event_scrapers), SPIDER (west_port_library)

  • Log analysis
  • Log categorization
  • Progress visualization
  • View log
  • Crawler.stats
  • projectevent_scrapers
    spiderwest_port_library
    job6ce5de1295f411f1bd880050565fa5d9
    first_log_time2026-08-12 04:20:47
    latest_log_time2026-08-12 04:39:35
    runtime0:18:48
    crawled_pages 339
    scraped_items 193
    shutdown_reasonN/A
    finish_reasonfinished
    log_critical_count0
    log_error_count20
    log_warning_count1
    log_redirect_count0
    log_retry_count0
    log_ignore_count0
    latest_crawl
    latest_scrape
    latest_log
    current_time
    latest_item{'event_url': 'https://westportlibrary.org/event/language-conversation-group-french-2-2-2/2026-10-23/', 'platform': 'West Port Library', 'platform_hash': '98fc034cf02effea491f1428a26aefbf', 'raw_body': '<div class="tribe-events-single" id="tribe-events-content">\n' '<p class="tribe-events-back">\n' '<a href="https://westportlibrary.org/calendar/"> « All ' 'Events</a>\n' '</p>\n' '<!-- Notices -->\n' '<div class="tribe-events-series-relationship-single-marker ' 'tribe-common">\n' '<span ' 'class="tribe-events-series-relationship-single-marker__icon">\n' '<svg aria-hidden="true" class="tribe-common-c-svgicon ' 'tribe-common-c-svgicon--series ' 'tribe-events-series-relationship-single-marker__icon-svg" ' 'fill="none" height="12" viewbox="0 0 14 12" width="14" ' 'xmlns="http://www.w3.org/2000/svg">\n' '<rect height="7" width="9" x="0.5" y="4.5"></rect>\n' '<path d="M2 2.5H11.5V10"></path>\n' '<path d="M4 0.5H13.5V8"></path>\n' '</svg>\n' '</span>\n' '<span ' 'class="tribe-events-series-relationship-single-marker__prefix">\n' '\t\tEvent Series:\t</span>\n' '<a class="tribe-events-series-relationship-single-marker__title ' 'tribe-common-cta--alt" ' 'href="https://westportlibrary.org/series/language-conversation-groups/">\n' '<span class="tec_series_marker__title">\n' '\t\t\tLanguage Conversation Groups\t\t</span>\n' '</a>\n' '</div>\n' '<h1 class="tribe-events-single-event-title">Language ' 'Conversation Group: French</h1>\n' '<div class="tribe-events-schedule tribe-clearfix">\n' '<div><span class="tribe-event-date-start">Fri, October 23 @ ' '11:00 am</span> - <span class="tribe-event-time">12:00 pm</span> ' '<span class="timezone"> EDT </span></div> </div>\n' '<!-- Event header -->\n' '<div data-title="Language Conversation Group: French | The ' 'Westport Library" data-viewtitle="Language Conversation Group: ' 'French" id="tribe-events-header">\n' '<!-- Navigation -->\n' '<nav aria-label="Event Navigation" ' 'class="tribe-events-nav-pagination">\n' '<ul class="tribe-events-sub-nav">\n' '<li class="tribe-events-nav-previous"><a ' 'href="https://westportlibrary.org/event/language-conversation-group-japanese-2-3-2/2026-10-23/"><span>«</span> ' 'Language Conversation Group: Japanese</a></li>\n' '<li class="tribe-events-nav-next"><a ' 'href="https://westportlibrary.org/event/language-conversation-group-german-4/2026-10-24/">Language ' 'Conversation Group: German <span>»</span></a></li>\n' '</ul>\n' '<!-- .tribe-events-sub-nav -->\n' '</nav>\n' '</div>\n' '<!-- #tribe-events-header -->\n' '<div class="post-10066425 tribe_events type-tribe_events ' 'status-publish has-post-thumbnail hentry tag-language-groups ' 'tribe_events_cat-adults tribe_events_cat-workshops-education ' 'cat_adults cat_workshops-education tribe-recurring-event ' 'tribe-recurring-event-parent" id="post-10066425">\n' '<!-- Event featured image, but exclude link -->\n' '<div class="tribe-events-event-image"><img alt="Image of the ' 'French flag" class="attachment-full size-full wp-post-image ' 'perfmatters-lazy entered pmloaded" data-ll-status="loaded" ' 'data-sizes="(max-width: 2160px) 100vw, 2160px" ' 'data-src="https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2.png" ' 'data-srcset="https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2.png ' '2160w, ' 'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-300x183.png ' '300w, ' 'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-1920x1173.png ' '1920w, ' 'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-150x92.png ' '150w, ' 'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-768x469.png ' '768w, ' 'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-1536x939.png ' '1536w, ' 'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-2048x1252.png ' '2048w" height="1320" sizes="(max-width: 2160px) 100vw, 2160px" ' 'src="https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2.png" ' 'srcset="https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2.png ' '2160w, ' 'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-300x183.png ' '300w, ' 'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-1920x1173.png ' '1920w, ' 'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-150x92.png ' '150w, ' 'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-768x469.png ' '768w, ' 'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-1536x939.png ' '1536w, ' 'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-2048x1252.png ' '2048w" width="2160"/></div>\n' '<!-- Event content -->\n' '<div class="tribe-events-single-event-description ' 'tribe-events-content">\n' '<p>This conversation group is for advanced French speakers who ' 'have proficiency in speaking French<strong>.</strong> There is a ' 'beginner/intermediate group that meets on Wednesdays.</p>\n' '<p>In order for all participants in the Library’s language ' 'groups to have the opportunity to meaningfully use their ' 'language skills, we limit the size of the groups. The Advanced ' 'French group is currently full. Please check back because we ' 'will update this information when space opens up.</p>\n' '<p>The group will meet every Friday from 11 am-12 pm in room ' '210. Contact Joan McAteer at <a ' 'href="mailto:nicoise2022@gmail.com">nicoise2022@gmail.com</a> ' 'for more information.</p>\n' '<p>\xa0</p>\n' '<p><a ' 'href="https://westportlibrary.libguides.com/sb.php?subject_id=85783" ' 'rel="noopener" target="_blank"><img alt="More Resources..." ' 'class="alignnone size-full wp-image-78781 perfmatters-lazy" ' 'data-sizes="(max-width: 200px) 100vw, 200px" ' 'data-src="https://westportlibrary.org/wp-content/uploads/2022/11/more-resources.png" ' 'data-srcset="https://westportlibrary.org/wp-content/uploads/2022/11/more-resources.png ' '200w, ' 'https://westportlibrary.org/wp-content/uploads/2022/11/more-resources-150x56.png ' '150w" decoding="async" height="75" ' 'src="data:image/svg+xml,%3Csvg%20xmlns=\'http://www.w3.org/2000/svg\'%20width=\'200\'%20height=\'75\'%20viewBox=\'0%200%20200%2075\'%3E%3C/svg%3E" ' 'width="200"/></a></p>\n' '<p><em><strong><a ' 'href="https://westportlibrary.libguides.com/languagelearning" ' 'rel="noopener" target="_blank">Learn a Language</a><br/>\n' '</strong></em><em><strong><a ' 'href="https://westportlibrary.libguides.com/ESL" rel="noopener" ' 'target="_blank">Foreign Language Library Collections </a><br/>\n' '</strong></em><em><strong><a ' 'href="https://westportlibrary.libguides.com/az.php?q=a%20to%20z%20world%20culture" ' 'rel="noopener" target="_blank">A to Z World ' 'Culture</a></strong></em></p>\n' '</div>\n' '<!-- .tribe-events-single-event-description -->\n' '<!-- Event meta -->\n' '<div class="tribe-events-single-section tribe-events-event-meta ' 'primary tribe-clearfix">\n' '<div class="tribe-events-meta-group ' 'tribe-events-meta-group-details">\n' '<h2 class="tribe-events-single-section-title"> Details </h2>\n' '<ul class="tribe-events-meta-list">\n' '<li class="tribe-events-meta-item">\n' '<span class="tribe-events-start-date-label ' 'tribe-events-meta-label">Date:</span>\n' '<span class="tribe-events-meta-value">\n' '<abbr class="tribe-events-abbr tribe-events-start-date published ' 'dtstart" title="2026-10-23"> Fri, October 23 </abbr>\n' '</span>\n' '</li>\n' '<li class="tribe-events-meta-item">\n' '<span class="tribe-events-start-time-label ' 'tribe-events-meta-label">Time:</span>\n' '<span class="tribe-events-meta-value">\n' '<div class="tribe-events-abbr tribe-events-start-time published ' 'dtstart" title="2026-10-23">\n' '<div class="tribe-recurring-event-time">11:00 am - 12:00 ' 'pm</div> <span class="tribe-events-abbr tribe-events-time-zone ' 'published">EDT</span>\n' '</div>\n' '</span>\n' '</li>\n' '<dt class="tec-events-pro-series-meta-detail--label">Series: ' '</dt>\n' '<dd class="tec-events-pro-series-meta-detail--link">\n' '<a ' 'href="https://westportlibrary.org/series/language-conversation-groups/" ' 'title="Language Conversation Groups">\n' '\t\t\t\tLanguage Conversation Groups\t\t\t</a>\n' '</dd>\n' '<li class="tribe-events-meta-item"><span ' 'class="tribe-events-event-categories-label ' 'tribe-events-meta-label">Event Categories:</span> <span ' 'class="tribe-events-event-categories tribe-events-meta-value"><a ' 'href="https://westportlibrary.org/calendar/category/adults/" ' 'rel="tag">Adults</a>, <a ' 'href="https://westportlibrary.org/calendar/category/workshops-education/" ' 'rel="tag">Workshops &amp; Education</a></span></li>\n' '<li class="tribe-events-meta-item"><span ' 'class="tribe-event-tags-label tribe-events-meta-label">Event ' 'Tags:</span><span class="tribe-event-tags ' 'tribe-events-meta-value"><a ' 'href="https://westportlibrary.org/calendar/tag/language-groups/" ' 'rel="tag">Language Groups</a></span></li>\n' '</ul>\n' '</div>\n' '<div class="tribe-events-meta-group ' 'tribe-events-meta-group-venue">\n' '<h2 class="tribe-events-single-section-title"> Venue </h2>\n' '<ul class="tribe-events-meta-list">\n' '<li class="tribe-events-meta-item tribe-venue"> <a ' 'href="https://westportlibrary.org/venue/room-210-the-westport-library/">Room ' '210, The Westport Library</a> </li>\n' '<li class="tribe-events-meta-item tribe-venue-location">\n' '<address class="tribe-events-address">\n' '<span class="tribe-address">\n' '<span class="tribe-street-address">20 Jesup Road</span>\n' '<br/>\n' '<span class="tribe-locality">Westport</span><span ' 'class="tribe-delimiter">,</span>\n' '<abbr class="tribe-region tribe-events-abbr" ' 'title="Connecticut">CT</abbr>\n' '<span class="tribe-postal-code">06880</span>\n' '<span class="tribe-country-name">United States</span>\n' '</span>\n' '</address>\n' '</li>\n' '</ul>\n' '</div>\n' '</div>\n' '<h2 class="tribe-events-related-events-title">\n' '\tRelated Events</h2>\n' '\n' '</div> <!-- #post-x -->\n' '<!-- Event footer -->\n' '<div id="tribe-events-footer">\n' '<!-- Navigation -->\n' '<nav aria-label="Event Navigation" ' 'class="tribe-events-nav-pagination">\n' '<ul class="tribe-events-sub-nav">\n' '<li class="tribe-events-nav-previous"><a ' 'href="https://westportlibrary.org/event/language-conversation-group-japanese-2-3-2/2026-10-23/"><span>«</span> ' 'Language Conversation Group: Japanese</a></li>\n' '<li class="tribe-events-nav-next"><a ' 'href="https://westportlibrary.org/event/language-conversation-group-german-4/2026-10-24/">Language ' 'Conversation Group: German <span>»</span></a></li>\n' '</ul>\n' '<!-- .tribe-events-sub-nav -->\n' '</nav>\n' '</div>\n' '<!-- #tribe-events-footer -->\n' '</div>'}
    • WARNING+

    • error_logs
      20 in total

      2026-08-12 04:20:53 [west_port_library] ERROR: API error 400: {"event_url":["Raw Event Data with this event url already exists."]}
      2026-08-12 04:21:11 [west_port_library] 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-12 04:21:14 [west_port_library] ERROR: API error 400: {"event_url":["Raw Event Data with this event url already exists."]}
      2026-08-12 04:21:18 [west_port_library] ERROR: API error 400: {"event_url":["Raw Event Data with this event url already exists."]}
      2026-08-12 04:21:26 [west_port_library] 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-12 04:21:32 [west_port_library] ERROR: API error 400: {"event_url":["Raw Event Data with this event url already exists."]}
      2026-08-12 04:22:01 [west_port_library] 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-12 04:22:01 [west_port_library] 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-12 04:22:18 [west_port_library] 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-12 04:22:30 [west_port_library] ERROR: API error 400: {"event_url":["Raw Event Data with this event url already exists."]}
      2026-08-12 04:22:31 [west_port_library] ERROR: API error 400: {"event_url":["Raw Event Data with this event url already exists."]}
      2026-08-12 04:22:32 [west_port_library] ERROR: API error 400: {"event_url":["Raw Event Data with this event url already exists."]}
      2026-08-12 04:22:34 [west_port_library] 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-12 04:22:39 [west_port_library] 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-12 04:22:42 [west_port_library] ERROR: API error 400: {"event_url":["Raw Event Data with this event url already exists."]}
      2026-08-12 04:22:47 [west_port_library] ERROR: API error 400: {"event_url":["Raw Event Data with this event url already exists."]}
      2026-08-12 04:22:48 [west_port_library] ERROR: API error 400: {"event_url":["Raw Event Data with this event url already exists."]}
      2026-08-12 04:22:48 [west_port_library] 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-12 04:22:48 [west_port_library] 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-12 04:22:48 [west_port_library] 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>
      
    • warning_logs
      1 in total

      2026-08-12 04:20:47 [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-12 04:20:47 [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-12 04:20:47 [py.warnings] WARNING: /root/.venv/lib/python3.12/site-packages/scrapy/core/spidermw.py:490: ScrapyDeprecationWarning: event_scrapers.spiders.west_port_library.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-12 04:20:49 [scrapy_zyte_api._params] WARNING: Cookies are enabled for request <GET https://westportlibrary.org/calendar/list/page/2/>, and there are cookies in the cookiejar, but ZYTE_API_EXPERIMENTAL_COOKIES_ENABLED is False, so automatic mapping will not map cookies for this or any other request. To silence this warning, disable cookies for all requests that use automatic mapping, either with the COOKIES_ENABLED setting or with the dont_merge_cookies request metadata key.

      INFO

      DEBUG

    • scrapy_version

      2.14.1
    • telnet_console

      127.0.0.1:6023
    • telnet_password

      deeadaa350bc05b9
    • latest_crawl

      2026-08-12 04:39:35 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/146/> (referer: https://westportlibrary.org/) ['zyte-api']
    • latest_stat

      2026-08-12 04:38:47 [scrapy.extensions.logstats] INFO: Crawled 333 pages (at 7 pages/min), scraped 193 items (at 0 items/min)
    • latest_scrape

      2026-08-12 04:23:19 [scrapy.core.scraper] DEBUG: Scraped from <200 https://westportlibrary.org/event/language-conversation-group-french-2-2-2/2026-10-23/>
    • latest_item

      {'event_url': 'https://westportlibrary.org/event/language-conversation-group-french-2-2-2/2026-10-23/',
       'platform': 'West Port Library',
       'platform_hash': '98fc034cf02effea491f1428a26aefbf',
       'raw_body': '<div class="tribe-events-single" id="tribe-events-content">\n'
                   '<p class="tribe-events-back">\n'
                   '<a href="https://westportlibrary.org/calendar/"> « All '
                   'Events</a>\n'
                   '</p>\n'
                   '<!-- Notices -->\n'
                   '<div class="tribe-events-series-relationship-single-marker '
                   'tribe-common">\n'
                   '<span '
                   'class="tribe-events-series-relationship-single-marker__icon">\n'
                   '<svg aria-hidden="true" class="tribe-common-c-svgicon '
                   'tribe-common-c-svgicon--series '
                   'tribe-events-series-relationship-single-marker__icon-svg" '
                   'fill="none" height="12" viewbox="0 0 14 12" width="14" '
                   'xmlns="http://www.w3.org/2000/svg">\n'
                   '<rect height="7" width="9" x="0.5" y="4.5"></rect>\n'
                   '<path d="M2 2.5H11.5V10"></path>\n'
                   '<path d="M4 0.5H13.5V8"></path>\n'
                   '</svg>\n'
                   '</span>\n'
                   '<span '
                   'class="tribe-events-series-relationship-single-marker__prefix">\n'
                   '\t\tEvent Series:\t</span>\n'
                   '<a class="tribe-events-series-relationship-single-marker__title '
                   'tribe-common-cta--alt" '
                   'href="https://westportlibrary.org/series/language-conversation-groups/">\n'
                   '<span class="tec_series_marker__title">\n'
                   '\t\t\tLanguage Conversation Groups\t\t</span>\n'
                   '</a>\n'
                   '</div>\n'
                   '<h1 class="tribe-events-single-event-title">Language '
                   'Conversation Group: French</h1>\n'
                   '<div class="tribe-events-schedule tribe-clearfix">\n'
                   '<div><span class="tribe-event-date-start">Fri, October 23 @ '
                   '11:00 am</span> - <span class="tribe-event-time">12:00 pm</span> '
                   '<span class="timezone"> EDT </span></div> </div>\n'
                   '<!-- Event header -->\n'
                   '<div data-title="Language Conversation Group: French | The '
                   'Westport Library" data-viewtitle="Language Conversation Group: '
                   'French" id="tribe-events-header">\n'
                   '<!-- Navigation -->\n'
                   '<nav aria-label="Event Navigation" '
                   'class="tribe-events-nav-pagination">\n'
                   '<ul class="tribe-events-sub-nav">\n'
                   '<li class="tribe-events-nav-previous"><a '
                   'href="https://westportlibrary.org/event/language-conversation-group-japanese-2-3-2/2026-10-23/"><span>«</span> '
                   'Language Conversation Group: Japanese</a></li>\n'
                   '<li class="tribe-events-nav-next"><a '
                   'href="https://westportlibrary.org/event/language-conversation-group-german-4/2026-10-24/">Language '
                   'Conversation Group: German <span>»</span></a></li>\n'
                   '</ul>\n'
                   '<!-- .tribe-events-sub-nav -->\n'
                   '</nav>\n'
                   '</div>\n'
                   '<!-- #tribe-events-header -->\n'
                   '<div class="post-10066425 tribe_events type-tribe_events '
                   'status-publish has-post-thumbnail hentry tag-language-groups '
                   'tribe_events_cat-adults tribe_events_cat-workshops-education '
                   'cat_adults cat_workshops-education tribe-recurring-event '
                   'tribe-recurring-event-parent" id="post-10066425">\n'
                   '<!-- Event featured image, but exclude link -->\n'
                   '<div class="tribe-events-event-image"><img alt="Image of the '
                   'French flag" class="attachment-full size-full wp-post-image '
                   'perfmatters-lazy entered pmloaded" data-ll-status="loaded" '
                   'data-sizes="(max-width: 2160px) 100vw, 2160px" '
                   'data-src="https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2.png" '
                   'data-srcset="https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2.png '
                   '2160w, '
                   'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-300x183.png '
                   '300w, '
                   'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-1920x1173.png '
                   '1920w, '
                   'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-150x92.png '
                   '150w, '
                   'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-768x469.png '
                   '768w, '
                   'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-1536x939.png '
                   '1536w, '
                   'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-2048x1252.png '
                   '2048w" height="1320" sizes="(max-width: 2160px) 100vw, 2160px" '
                   'src="https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2.png" '
                   'srcset="https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2.png '
                   '2160w, '
                   'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-300x183.png '
                   '300w, '
                   'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-1920x1173.png '
                   '1920w, '
                   'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-150x92.png '
                   '150w, '
                   'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-768x469.png '
                   '768w, '
                   'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-1536x939.png '
                   '1536w, '
                   'https://westportlibrary.org/wp-content/uploads/2023/07/JK-Eventbrite-Event-Cal-Template-USE-WHEN-BOTH-APPLY-2160-x-1320-px-2-2048x1252.png '
                   '2048w" width="2160"/></div>\n'
                   '<!-- Event content -->\n'
                   '<div class="tribe-events-single-event-description '
                   'tribe-events-content">\n'
                   '<p>This conversation group is for advanced French speakers who '
                   'have proficiency in speaking French<strong>.</strong> There is a '
                   'beginner/intermediate group that meets on Wednesdays.</p>\n'
                   '<p>In order for all participants in the Library’s language '
                   'groups to have the opportunity to meaningfully use their '
                   'language skills, we limit the size of the groups. The Advanced '
                   'French group is currently full. Please check back because we '
                   'will update this information when space opens up.</p>\n'
                   '<p>The group will meet every Friday from 11 am-12 pm in room '
                   '210. Contact Joan McAteer at <a '
                   'href="mailto:nicoise2022@gmail.com">nicoise2022@gmail.com</a> '
                   'for more information.</p>\n'
                   '<p>\xa0</p>\n'
                   '<p><a '
                   'href="https://westportlibrary.libguides.com/sb.php?subject_id=85783" '
                   'rel="noopener" target="_blank"><img alt="More Resources..." '
                   'class="alignnone size-full wp-image-78781 perfmatters-lazy" '
                   'data-sizes="(max-width: 200px) 100vw, 200px" '
                   'data-src="https://westportlibrary.org/wp-content/uploads/2022/11/more-resources.png" '
                   'data-srcset="https://westportlibrary.org/wp-content/uploads/2022/11/more-resources.png '
                   '200w, '
                   'https://westportlibrary.org/wp-content/uploads/2022/11/more-resources-150x56.png '
                   '150w" decoding="async" height="75" '
                   'src="data:image/svg+xml,%3Csvg%20xmlns=\'http://www.w3.org/2000/svg\'%20width=\'200\'%20height=\'75\'%20viewBox=\'0%200%20200%2075\'%3E%3C/svg%3E" '
                   'width="200"/></a></p>\n'
                   '<p><em><strong><a '
                   'href="https://westportlibrary.libguides.com/languagelearning" '
                   'rel="noopener" target="_blank">Learn a Language</a><br/>\n'
                   '</strong></em><em><strong><a '
                   'href="https://westportlibrary.libguides.com/ESL" rel="noopener" '
                   'target="_blank">Foreign Language Library Collections </a><br/>\n'
                   '</strong></em><em><strong><a '
                   'href="https://westportlibrary.libguides.com/az.php?q=a%20to%20z%20world%20culture" '
                   'rel="noopener" target="_blank">A to Z World '
                   'Culture</a></strong></em></p>\n'
                   '</div>\n'
                   '<!-- .tribe-events-single-event-description -->\n'
                   '<!-- Event meta -->\n'
                   '<div class="tribe-events-single-section tribe-events-event-meta '
                   'primary tribe-clearfix">\n'
                   '<div class="tribe-events-meta-group '
                   'tribe-events-meta-group-details">\n'
                   '<h2 class="tribe-events-single-section-title"> Details </h2>\n'
                   '<ul class="tribe-events-meta-list">\n'
                   '<li class="tribe-events-meta-item">\n'
                   '<span class="tribe-events-start-date-label '
                   'tribe-events-meta-label">Date:</span>\n'
                   '<span class="tribe-events-meta-value">\n'
                   '<abbr class="tribe-events-abbr tribe-events-start-date published '
                   'dtstart" title="2026-10-23"> Fri, October 23 </abbr>\n'
                   '</span>\n'
                   '</li>\n'
                   '<li class="tribe-events-meta-item">\n'
                   '<span class="tribe-events-start-time-label '
                   'tribe-events-meta-label">Time:</span>\n'
                   '<span class="tribe-events-meta-value">\n'
                   '<div class="tribe-events-abbr tribe-events-start-time published '
                   'dtstart" title="2026-10-23">\n'
                   '<div class="tribe-recurring-event-time">11:00 am - 12:00 '
                   'pm</div> <span class="tribe-events-abbr tribe-events-time-zone '
                   'published">EDT</span>\n'
                   '</div>\n'
                   '</span>\n'
                   '</li>\n'
                   '<dt class="tec-events-pro-series-meta-detail--label">Series: '
                   '</dt>\n'
                   '<dd class="tec-events-pro-series-meta-detail--link">\n'
                   '<a '
                   'href="https://westportlibrary.org/series/language-conversation-groups/" '
                   'title="Language Conversation Groups">\n'
                   '\t\t\t\tLanguage Conversation Groups\t\t\t</a>\n'
                   '</dd>\n'
                   '<li class="tribe-events-meta-item"><span '
                   'class="tribe-events-event-categories-label '
                   'tribe-events-meta-label">Event Categories:</span> <span '
                   'class="tribe-events-event-categories tribe-events-meta-value"><a '
                   'href="https://westportlibrary.org/calendar/category/adults/" '
                   'rel="tag">Adults</a>, <a '
                   'href="https://westportlibrary.org/calendar/category/workshops-education/" '
                   'rel="tag">Workshops &amp; Education</a></span></li>\n'
                   '<li class="tribe-events-meta-item"><span '
                   'class="tribe-event-tags-label tribe-events-meta-label">Event '
                   'Tags:</span><span class="tribe-event-tags '
                   'tribe-events-meta-value"><a '
                   'href="https://westportlibrary.org/calendar/tag/language-groups/" '
                   'rel="tag">Language Groups</a></span></li>\n'
                   '</ul>\n'
                   '</div>\n'
                   '<div class="tribe-events-meta-group '
                   'tribe-events-meta-group-venue">\n'
                   '<h2 class="tribe-events-single-section-title"> Venue </h2>\n'
                   '<ul class="tribe-events-meta-list">\n'
                   '<li class="tribe-events-meta-item tribe-venue"> <a '
                   'href="https://westportlibrary.org/venue/room-210-the-westport-library/">Room '
                   '210, The Westport Library</a> </li>\n'
                   '<li class="tribe-events-meta-item tribe-venue-location">\n'
                   '<address class="tribe-events-address">\n'
                   '<span class="tribe-address">\n'
                   '<span class="tribe-street-address">20 Jesup Road</span>\n'
                   '<br/>\n'
                   '<span class="tribe-locality">Westport</span><span '
                   'class="tribe-delimiter">,</span>\n'
                   '<abbr class="tribe-region tribe-events-abbr" '
                   'title="Connecticut">CT</abbr>\n'
                   '<span class="tribe-postal-code">06880</span>\n'
                   '<span class="tribe-country-name">United States</span>\n'
                   '</span>\n'
                   '</address>\n'
                   '</li>\n'
                   '</ul>\n'
                   '</div>\n'
                   '</div>\n'
                   '<h2 class="tribe-events-related-events-title">\n'
                   '\tRelated Events</h2>\n'
                   '\n'
                   '</div> <!-- #post-x -->\n'
                   '<!-- Event footer -->\n'
                   '<div id="tribe-events-footer">\n'
                   '<!-- Navigation -->\n'
                   '<nav aria-label="Event Navigation" '
                   'class="tribe-events-nav-pagination">\n'
                   '<ul class="tribe-events-sub-nav">\n'
                   '<li class="tribe-events-nav-previous"><a '
                   'href="https://westportlibrary.org/event/language-conversation-group-japanese-2-3-2/2026-10-23/"><span>«</span> '
                   'Language Conversation Group: Japanese</a></li>\n'
                   '<li class="tribe-events-nav-next"><a '
                   'href="https://westportlibrary.org/event/language-conversation-group-german-4/2026-10-24/">Language '
                   'Conversation Group: German <span>»</span></a></li>\n'
                   '</ul>\n'
                   '<!-- .tribe-events-sub-nav -->\n'
                   '</nav>\n'
                   '</div>\n'
                   '<!-- #tribe-events-footer -->\n'
                   '</div>'}
    • Head

      2026-08-12 04:20:47 [scrapy.utils.log] INFO: Scrapy 2.14.1 started (bot: event_scrapers)
      2026-08-12 04:20:47 [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-12 04:20:47 [scrapy.crawler] DEBUG: Using AsyncCrawlerProcess
      2026-08-12 04:20:47 [asyncio] DEBUG: Using selector: EpollSelector
      2026-08-12 04:20:47 [scrapy.addons] INFO: Enabled addons:
      []
      2026-08-12 04:20:47 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.asyncioreactor.AsyncioSelectorReactor
      2026-08-12 04:20:47 [scrapy.utils.log] DEBUG: Using asyncio event loop: asyncio.unix_events._UnixSelectorEventLoop
      2026-08-12 04:20:47 [scrapy.extensions.telnet] INFO: Telnet Password: deeadaa350bc05b9
      2026-08-12 04:20:47 [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-12 04:20:47 [scrapy.crawler] INFO: Overridden settings:
      {'BOT_NAME': 'event_scrapers',
       'FEED_EXPORT_ENCODING': 'utf-8',
       'FEED_URI_PARAMS': <function _feed_uri_params at 0x7404ad32f4c0>,
       'LOG_FILE': '/root/event-list-scraping/logs/event_scrapers/west_port_library/6ce5de1295f411f1bd880050565fa5d9.log',
       'NEWSPIDER_MODULE': 'event_scrapers.spiders',
       'REQUEST_FINGERPRINTER_CLASS': 'scrapy_zyte_api.ScrapyZyteAPIRequestFingerprinter',
       'SPIDER_MODULES': ['event_scrapers.spiders']}
      2026-08-12 04:20:47 [scrapy_zyte_api.handler] INFO: Using a Zyte API key starting with 'ff9baec'
      2026-08-12 04:20:47 [scrapy_zyte_api.handler] INFO: Using a Zyte API key starting with 'ff9baec'
      2026-08-12 04:20:47 [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-12 04:20:47 [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-12 04:20:47 [scrapy.middleware] INFO: Enabled item pipelines:
      ['event_scrapers.pipelines.EventScrapersPipeline']
      2026-08-12 04:20:47 [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-12 04:20:47 [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-12 04:20:47 [scrapy.core.engine] INFO: Spider opened
      2026-08-12 04:20:47 [py.warnings] WARNING: /root/.venv/lib/python3.12/site-packages/scrapy/core/spidermw.py:490: ScrapyDeprecationWarning: event_scrapers.spiders.west_port_library.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-12 04:20:47 [west_port_library] INFO: Sending scraped events to prod API
      2026-08-12 04:20:47 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
      2026-08-12 04:20:47 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
      2026-08-12 04:20:47 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:20:49 [scrapy_zyte_api._params] WARNING: Cookies are enabled for request <GET https://westportlibrary.org/calendar/list/page/2/>, and there are cookies in the cookiejar, but ZYTE_API_EXPERIMENTAL_COOKIES_ENABLED is False, so automatic mapping will not map cookies for this or any other request. To silence this warning, disable cookies for all requests that use automatic mapping, either with the COOKIES_ENABLED setting or with the dont_merge_cookies request metadata key.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:20:50 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/event/somewhat-silent-book-club-2/2026-08-12/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:20:50 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/event/beginner-intermediate-french-conversation-group/2026-08-12/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:20:50 [urllib3.connectionpool] DEBUG: Starting new HTTPS connection (1): norwalklist.org:443
      2026-08-12 04:20:50 [urllib3.connectionpool] DEBUG: https://norwalklist.org:443 "POST /api/v1/raw-events/ HTTP/1.1" 201 9073
      2026-08-12 04:20:50 [scrapy.core.scraper] DEBUG: Scraped from <200 https://westportlibrary.org/event/somewhat-silent-book-club-2/2026-08-12/>
      {'event_url': 'https://westportlibrary.org/event/somewhat-silent-book-club-2/2026-08-12/',
       'platform': 'West Port Library',
       'platform_hash': '98fc034cf02effea491f1428a26aefbf',
    • Tail

      2026-08-12 04:28:41 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/75/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:28:41 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:28:43 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/76/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:28:44 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:28:47 [scrapy.extensions.logstats] INFO: Crawled 269 pages (at 13 pages/min), scraped 193 items (at 0 items/min)
      2026-08-12 04:28:49 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/77/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:28:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:28:53 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/78/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:28:54 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:28:58 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/79/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:28:58 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:29:00 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/80/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:29:01 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:29:05 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/81/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:29:05 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:29:08 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/82/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:29:08 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:29:11 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/83/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:29:11 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:29:38 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/84/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:29:38 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:29:40 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/85/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:29:40 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:29:43 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/86/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:29:43 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:29:45 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/87/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:29:46 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:29:47 [scrapy.extensions.logstats] INFO: Crawled 280 pages (at 11 pages/min), scraped 193 items (at 0 items/min)
      2026-08-12 04:29:48 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/88/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:29:48 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:30:32 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/89/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:30:32 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:30:35 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/90/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:30:35 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:30:38 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/91/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:30:38 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:30:41 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/92/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:30:41 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:30:47 [scrapy.extensions.logstats] INFO: Crawled 285 pages (at 5 pages/min), scraped 193 items (at 0 items/min)
      2026-08-12 04:30:52 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/93/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:30:52 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:30:55 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/94/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:30:55 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:30:59 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/95/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:30:59 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:31:00 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/96/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:31:00 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:31:03 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/97/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:31:03 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:31:08 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/98/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:31:08 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:31:09 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/99/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:31:10 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:31:12 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/100/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:31:12 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:31:14 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/101/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:31:14 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:31:16 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/102/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:31:16 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:31:17 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/103/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:31:17 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:31:47 [scrapy.extensions.logstats] INFO: Crawled 296 pages (at 11 pages/min), scraped 193 items (at 0 items/min)
      2026-08-12 04:32:41 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/104/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:32:41 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:32:43 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/105/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:32:43 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:32:44 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/106/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:32:44 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:32:47 [scrapy.extensions.logstats] INFO: Crawled 299 pages (at 3 pages/min), scraped 193 items (at 0 items/min)
      2026-08-12 04:32:54 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/107/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:32:54 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:32:55 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/108/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:32:56 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:33:00 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/109/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:33:00 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:33:01 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/110/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:33:01 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:33:02 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/111/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:33:03 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:33:20 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/112/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:33:20 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:33:47 [scrapy.extensions.logstats] INFO: Crawled 305 pages (at 6 pages/min), scraped 193 items (at 0 items/min)
      2026-08-12 04:33:56 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/113/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:33:56 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:33:59 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/114/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:33:59 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:34:36 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/115/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:34:36 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:34:47 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/116/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:34:47 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:34:47 [scrapy.extensions.logstats] INFO: Crawled 309 pages (at 4 pages/min), scraped 193 items (at 0 items/min)
      2026-08-12 04:34:50 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/117/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:34:51 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:34:53 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/118/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:34:53 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:34:56 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/119/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:34:56 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:35:03 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/120/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:35:03 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:35:27 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/121/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:35:27 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:35:31 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/122/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:35:31 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:35:37 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/123/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:35:37 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:35:47 [scrapy.extensions.logstats] INFO: Crawled 316 pages (at 7 pages/min), scraped 193 items (at 0 items/min)
      2026-08-12 04:35:52 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/124/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:35:52 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:35:54 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/125/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:35:54 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:36:21 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/126/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:36:21 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:36:43 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/127/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:36:43 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:36:45 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/128/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:36:45 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:36:47 [scrapy.extensions.logstats] INFO: Crawled 321 pages (at 5 pages/min), scraped 193 items (at 0 items/min)
      2026-08-12 04:37:25 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/129/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:37:25 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:37:28 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/130/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:37:28 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:37:31 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/131/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:37:31 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:37:34 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/132/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:37:34 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:37:37 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/133/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:37:37 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:37:47 [scrapy.extensions.logstats] INFO: Crawled 326 pages (at 5 pages/min), scraped 193 items (at 0 items/min)
      2026-08-12 04:37:56 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/134/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:37:56 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:37:59 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/135/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:37:59 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:38:16 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/136/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:38:16 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:38:18 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/137/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:38:18 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:38:40 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/138/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:38:40 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:38:44 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/139/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:38:44 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:38:46 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/140/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:38:46 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:38:47 [scrapy.extensions.logstats] INFO: Crawled 333 pages (at 7 pages/min), scraped 193 items (at 0 items/min)
      2026-08-12 04:38:49 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/141/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:38:49 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:38:51 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/142/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:38:51 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:39:10 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/143/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:39:10 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:39:14 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/144/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:39:15 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:39:33 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/145/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:39:33 [zyte_api._retry] DEBUG: Starting call to 'zyte_api._async.AsyncZyteAPI.get.<locals>.request', this is the 1st time calling it.
      2026-08-12 04:39:35 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://westportlibrary.org/calendar/list/page/146/> (referer: https://westportlibrary.org/) ['zyte-api']
      2026-08-12 04:39:35 [scrapy.core.engine] INFO: Closing spider (finished)
      2026-08-12 04:39:35 [scrapy.extensions.feedexport] INFO: Stored csv feed (193 items) in: output/2026/08/12/west_port_library.csv
      2026-08-12 04:39:35 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
      {'downloader/request_bytes': 335999,
       'downloader/request_count': 339,
       'downloader/request_method_count/GET': 339,
       'downloader/response_bytes': 79709386,
       'downloader/response_count': 339,
       'downloader/response_status_count/200': 339,
       'elapsed_time_seconds': 1128.137985,
       'feedexport/success_count/FileFeedStorage': 1,
       'finish_reason': 'finished',
       'finish_time': datetime.datetime(2026, 8, 12, 2, 39, 35, 978867, tzinfo=datetime.timezone.utc),
       'item_scraped_count': 193,
       'items_per_minute': 10.26595744680851,
       'log_count/DEBUG': 1257,
       'log_count/ERROR': 20,
       'log_count/INFO': 21,
       'log_count/WARNING': 1,
       'memusage/max': 197709824,
       'memusage/startup': 99536896,
       'request_depth_max': 145,
       'response_received_count': 339,
       'responses_per_minute': 18.03191489361702,
       'scheduler/dequeued': 339,
       'scheduler/dequeued/memory': 339,
       'scheduler/enqueued': 339,
       'scheduler/enqueued/memory': 339,
       'scrapy-zyte-api/429': 0,
       'scrapy-zyte-api/attempts': 339,
       'scrapy-zyte-api/error_ratio': 0.0,
       'scrapy-zyte-api/errors': 0,
       'scrapy-zyte-api/fatal_errors': 0,
       'scrapy-zyte-api/mean_connection_seconds': 6.829896926627136,
       'scrapy-zyte-api/mean_response_seconds': 7.105043534925728,
       'scrapy-zyte-api/processed': 339,
       'scrapy-zyte-api/request_args/customHttpRequestHeaders': 339,
       'scrapy-zyte-api/request_args/httpResponseBody': 339,
       'scrapy-zyte-api/request_args/httpResponseHeaders': 339,
       'scrapy-zyte-api/request_args/url': 339,
       'scrapy-zyte-api/status_codes/200': 339,
       'scrapy-zyte-api/success': 339,
       'scrapy-zyte-api/success_ratio': 1.0,
       'scrapy-zyte-api/throttle_ratio': 0.0,
       'start_time': datetime.datetime(2026, 8, 12, 2, 20, 47, 840882, tzinfo=datetime.timezone.utc)}
      2026-08-12 04:39:35 [scrapy.core.engine] INFO: Spider closed (finished)
    • Log

      /1/log/utf8/event_scrapers/west_port_library/6ce5de1295f411f1bd880050565fa5d9/?job_finished=True

    • Source

      http://127.0.0.1:6800/logs/event_scrapers/west_port_library/6ce5de1295f411f1bd880050565fa5d9.log

  • sourcelog
    last_update_time2026-08-12 04:39:35
    last_update_timestamp1786502375
    downloader/request_bytes335999
    downloader/request_count339
    downloader/request_method_count/GET339
    downloader/response_bytes79709386
    downloader/response_count339
    downloader/response_status_count/200339
    elapsed_time_seconds1128.137985
    feedexport/success_count/FileFeedStorage1
    finish_reasonfinished
    finish_timedatetime.datetime(2026, 8, 12, 2, 39, 35, 978867, tzinfo=datetime.timezone.utc)
    item_scraped_count193
    items_per_minute10.26595744680851
    log_count/DEBUG1257
    log_count/ERROR20
    log_count/INFO21
    log_count/WARNING1
    memusage/max197709824
    memusage/startup99536896
    request_depth_max145
    response_received_count339
    responses_per_minute18.03191489361702
    scheduler/dequeued339
    scheduler/dequeued/memory339
    scheduler/enqueued339
    scheduler/enqueued/memory339
    scrapy-zyte-api/4290
    scrapy-zyte-api/attempts339
    scrapy-zyte-api/error_ratio0.0
    scrapy-zyte-api/errors0
    scrapy-zyte-api/fatal_errors0
    scrapy-zyte-api/mean_connection_seconds6.829896926627136
    scrapy-zyte-api/mean_response_seconds7.105043534925728
    scrapy-zyte-api/processed339
    scrapy-zyte-api/request_args/customHttpRequestHeaders339
    scrapy-zyte-api/request_args/httpResponseBody339
    scrapy-zyte-api/request_args/httpResponseHeaders339
    scrapy-zyte-api/request_args/url339
    scrapy-zyte-api/status_codes/200339
    scrapy-zyte-api/success339
    scrapy-zyte-api/success_ratio1.0
    scrapy-zyte-api/throttle_ratio0.0
    start_timedatetime.datetime(2026, 8, 12, 2, 20, 47, 840882, tzinfo=datetime.timezone.utc)