Facility: 100717
Brother's Storage
- Facility ID
- 100717
- Name
- Brother's Storage
- URL
- http://brotherstorage.com/
- Address
- W395 N5850 Trek Trail, Oconomowoc, WI 53066, USA, Oconomowoc, Wisconsin 53066
- Platform
- custom_facility_100717
- Parser File
- src/parsers/custom/facility_100717_parser.py
- Last Scraped
- 2026-03-27 13:42:24.301708
- Created
- 2026-03-23 02:35:08.816820
- Updated
- 2026-03-27 13:42:24.334916
- Parser Status
- ✓ Working
- Status Reason
- N/A
- Last Healing Attempt
- Not attempted
Parser Source (src/parsers/custom/facility_100717_parser.py)
"""Parser for Brother's Storage."""
from __future__ import annotations
import re
from bs4 import BeautifulSoup
from src.parsers.base import BaseParser, ParseResult, UnitResult
class Facility100717Parser(BaseParser):
"""Extract storage units from Brother's Storage (Wix site)."""
platform = "custom_facility_100717"
def parse(self, html: str, url: str = "") -> ParseResult:
soup = BeautifulSoup(html, "lxml")
result = ParseResult(platform=self.platform, parser_name=self.__class__.__name__)
# Sizes are in a select dropdown with option elements
options = soup.select("select.wixui-dropdown__input option")
for option in options:
text = option.get_text(strip=True)
size_match = re.search(
r"(\d+)\s*['\u2019\u2032]?\s*[xX\u00d7]\s*(\d+)\s*['\u2019\u2032]?",
text,
)
if size_match:
unit = UnitResult()
unit.size = text
w, ln, sq = self.normalize_size(text)
if w is not None:
unit.metadata = {"width": w, "length": ln, "sqft": sq}
unit.description = f"Storage Unit {text}"
result.units.append(unit)
if not result.units:
result.warnings.append("No units found")
return result
Scrape Runs (3)
Run #1059 Details
- Status
- exported
- Parser Used
- Facility100717Parser
- Platform Detected
- table_layout
- Units Found
- 6
- Stage Reached
- exported
- Timestamp
- 2026-03-23 02:42:27.068982
Timing
| Stage | Duration |
|---|---|
| Fetch | 5022ms |
| Detect | 77ms |
| Parse | 31ms |
| Export | 3ms |
Snapshot: 100717_20260323T024232Z.html · Show Snapshot · Open in New Tab
Parsed Units (6)
5' x 10'
No price
10' x 10'
No price
10' x 15'
No price
10' x 20'
No price
10' x 25'
No price
10' x 30'
No price