Facility: 090510
Kelly Avenue Mini Storage
- Facility ID
- 090510
- Name
- Kelly Avenue Mini Storage
- URL
- https://kellyaveministorage.com/
- Address
- 309 Centennial Blvd, Edmond, OK 73013, USA, Edmond, Oklahoma 73013
- Platform
- custom_facility_090510
- Parser File
- src/parsers/custom/facility_090510_parser.py
- Last Scraped
- 2026-03-27 13:46:04.904444
- Created
- 2026-03-20 23:23:10.660695
- Updated
- 2026-03-27 13:46:04.930821
- Parser Status
- ✓ Working
- Status Reason
- N/A
- Last Healing Attempt
- Not attempted
Parser Source (src/parsers/custom/facility_090510_parser.py)
"""Parser for Kelly Avenue Mini Storage."""
from __future__ import annotations
from bs4 import BeautifulSoup
from src.parsers.base import BaseParser, ParseResult, UnitResult
class Facility090510Parser(BaseParser):
"""Extract storage units from Kelly Avenue Mini Storage."""
platform = "custom_facility_090510"
def parse(self, html: str, url: str = "") -> ParseResult:
soup = BeautifulSoup(html, "lxml")
result = ParseResult(platform=self.platform, parser_name=self.__class__.__name__)
# Divi theme pricing tables: .et_pb_pricing_table contains unit size in
# .et_pb_pricing_title. Prices not listed on-page ("Monthly Leasing").
seen_sizes = set()
for table in soup.select(".et_pb_pricing_table"):
title_el = table.select_one(".et_pb_pricing_title")
if not title_el:
continue
size_text = title_el.get_text(strip=True)
if not size_text or size_text in seen_sizes:
continue
seen_sizes.add(size_text)
unit = UnitResult()
unit.size = size_text
w, ln, sq = self.normalize_size(size_text)
if w is not None:
unit.metadata = {"width": w, "length": ln, "sqft": sq}
result.units.append(unit)
if not result.units:
result.warnings.append("No units found on page")
return result
Scrape Runs (5)
-
exported Run #16852026-03-27 13:45:58.617702 | 6 units | Facility090510Parser | View Data →
-
exported Run #16842026-03-27 13:45:57.243399 | 6 units | Facility090510Parser | View Data →
-
exported Run #11052026-03-23 02:47:00.868331 | 6 units | Facility090510Parser | View Data →
-
failed Run #11042026-03-23 02:46:30.804520 | 1 failure(s)
-
exported Run #6102026-03-21 18:36:43.885917 | 6 units | Facility090510Parser | View Data →
Run #1684 Details
- Status
- exported
- Parser Used
- Facility090510Parser
- Platform Detected
- table_layout
- Units Found
- 6
- Stage Reached
- exported
- Timestamp
- 2026-03-27 13:45:57.243399
Timing
| Stage | Duration |
|---|---|
| Fetch | 7532ms |
| Detect | 24ms |
| Parse | 15ms |
| Export | 18ms |
Snapshot: 090510_20260327T134604Z.html · Show Snapshot · Open in New Tab
Parsed Units (6)
5 x 10
7 x 10
8 x 10
10 x 10
10 x 17
10 x 35
All Failures for this Facility (1)
Message: timeout: Timed out receiving message from renderer: -0.006 (Session info: chrome=146.0.7680.153) Stacktrace: #0 0x55785c8c78ce <unknown> #1 0x55785c2851d2 <unknown> #2 0x55785c2701fc <unknown> #3 0x55785c26ffe9 <unknown> #4 0x55785c26e5e6 <unknown> #5 0x55785c26ea96 <unknown> #6 0x55785c27d0f7 <unknown> #7 0x55785c29277d <unknown> #8 0x55785c29802b <unknown> #9 0x55785c26f0a1 <unknown> #10 0x55785c2925bf <unknown> #11 0x55785c31486a <unknown> #12 0x55785c2f4a03 <unknown> #13 0x55785c2c55d5 <unknown> #14 0x55785c2c61c1 <unknown> #15 0x55785c88bf10 <unknown> #16 0x55785c88f1d8 <unknown> #17 0x55785c88ec8a <unknown> #18 0x55785c88f645 <unknown> #19 0x55785c87b8fb <unknown> #20 0x55785c88f9a7 <unknown> #21 0x55785c863836 <unknown> #22 0x55785c8b48a5 <unknown> #23 0x55785c8b4a9c <unknown> #24 0x55785c8c638a <unknown> #25 0x7f052cc7e1f5 <unknown>
Stack trace
Traceback (most recent call last):
File "/app/src/pipeline.py", line 361, in _process_facility
fetch_result = fetch_page(driver, url, snapshot_mgr, facility_id, **fetch_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/src/fetcher/fetcher.py", line 125, in fetch_page
driver.get(url)
File "/app/.venv/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 466, in get
self.execute(Command.GET, {"url": url})
File "/app/.venv/lib/python3.11/site-packages/selenium/webdriver/remote/webdriver.py", line 446, in execute
self.error_handler.check_response(response)
File "/app/.venv/lib/python3.11/site-packages/selenium/webdriver/remote/errorhandler.py", line 232, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: timeout: Timed out receiving message from renderer: -0.006
(Session info: chrome=146.0.7680.153)
Stacktrace:
#0 0x55785c8c78ce <unknown>
#1 0x55785c2851d2 <unknown>
#2 0x55785c2701fc <unknown>
#3 0x55785c26ffe9 <unknown>
#4 0x55785c26e5e6 <unknown>
#5 0x55785c26ea96 <unknown>
#6 0x55785c27d0f7 <unknown>
#7 0x55785c29277d <unknown>
#8 0x55785c29802b <unknown>
#9 0x55785c26f0a1 <unknown>
#10 0x55785c2925bf <unknown>
#11 0x55785c31486a <unknown>
#12 0x55785c2f4a03 <unknown>
#13 0x55785c2c55d5 <unknown>
#14 0x55785c2c61c1 <unknown>
#15 0x55785c88bf10 <unknown>
#16 0x55785c88f1d8 <unknown>
#17 0x55785c88ec8a <unknown>
#18 0x55785c88f645 <unknown>
#19 0x55785c87b8fb <unknown>
#20 0x55785c88f9a7 <unknown>
#21 0x55785c863836 <unknown>
#22 0x55785c8b48a5 <unknown>
#23 0x55785c8b4a9c <unknown>
#24 0x55785c8c638a <unknown>
#25 0x7f052cc7e1f5 <unknown>