Facility: 001859
Store Smart Self Storage
- Facility ID
- 001859
- Name
- Store Smart Self Storage
- URL
- https://www.smdservers.net/SLWebSiteTemplate_V2/ReserveOnly.aspx?sCorpCode=kkhgA1ncJfQzWJjU2yQgOQ==&sLocationCode=F3e81MY3f4IcaovtqM7F3w==
- Address
- 105 Cedarwood Dr, Lebanon, TN 37087, USA, Lebanon, Tennessee 37087
- Platform
- custom_facility_001859
- Parser File
- src/parsers/custom/facility_001859_parser.py
- Last Scraped
- 2026-03-27 13:48:50.130015
- Created
- 2026-03-14 16:21:53.706708
- Updated
- 2026-03-27 13:48:50.163495
- Parser Status
- ✓ Working
- Status Reason
- N/A
- Last Healing Attempt
- Not attempted
Parser Source (src/parsers/custom/facility_001859_parser.py)
"""Parser for Store Smart Self Storage (Lebanon, TN) - SMD Servers platform."""
from __future__ import annotations
from bs4 import BeautifulSoup
from src.parsers.base import BaseParser, ParseResult, UnitResult
class Facility001859Parser(BaseParser):
"""Extract storage units from Store Smart Self Storage (SMD Servers grid table)."""
platform = "custom_facility_001859"
def parse(self, html: str, url: str = "") -> ParseResult:
soup = BeautifulSoup(html, "lxml")
result = ParseResult(platform=self.platform, parser_name=self.__class__.__name__)
table = soup.find("table", id="UnitTypes1_grdUnits")
if not table:
result.warnings.append("Unit grid table (UnitTypes1_grdUnits) not found")
return result
rows = table.find_all("tr", class_=["HRRowStyle", "HRAltRowStyle"])
for row in rows:
size_td = row.find("td", class_="UnitTypesUC_I_UnitSize")
type_td = row.find("td", class_="UnitTypesUC_I_TypeName")
rate_td = row.find("td", class_="UnitTypesUC_I_StdRate")
if not size_td or not rate_td:
continue
size_text = size_td.get_text(strip=True)
rate_text = rate_td.get_text(strip=True)
type_text = type_td.get_text(strip=True) if type_td else ""
unit = UnitResult()
unit.size = size_text
unit.price = self.normalize_price(rate_text)
unit.description = type_text
w, ln, sq = self.normalize_size(size_text)
if w is not None:
unit.metadata = {"width": w, "length": ln, "sqft": sq}
if unit.size or unit.price:
result.units.append(unit)
if not result.units:
result.warnings.append("No units extracted from grid table")
return result
Scrape Runs (5)
-
exported Run #17472026-03-27 13:48:45.883166 | 44 units | Facility001859Parser | View Data →
-
exported Run #17462026-03-27 13:48:45.675785 | 44 units | Facility001859Parser | View Data →
-
exported Run #11362026-03-23 02:50:27.440624 | 44 units | Facility001859Parser | View Data →
-
exported Run #6412026-03-21 18:40:19.115153 | 44 units | Facility001859Parser | View Data →
-
exported Run #1922026-03-14 16:23:49.777011 | 43 units | Facility001859Parser | View Data →
Run #192 Details
- Status
- exported
- Parser Used
- Facility001859Parser
- Platform Detected
- table_layout
- Units Found
- 43
- Stage Reached
- exported
- Timestamp
- 2026-03-14 16:23:49.777011
Timing
| Stage | Duration |
|---|---|
| Fetch | 4126ms |
| Detect | 19ms |
| Parse | 10ms |
| Export | 20ms |
Snapshot: 001859_20260314T162353Z.html · Show Snapshot · Open in New Tab
Parsed Units (43)
20x3
$30.00/mo
9x20
$54.00/mo
9x20
$60.00/mo
10x20
$60.00/mo
10x10
$65.00/mo
5x10
$70.00/mo
5x5
$75.00/mo
5x10
$75.00/mo
10x5
$75.00/mo
10x10
$75.00/mo
5x11
$77.00/mo
9x30
$78.00/mo
8x10
$81.00/mo
10x15
$85.00/mo
9x33
$88.00/mo
5x10
$90.00/mo
10x9
$90.00/mo
30x10
$90.00/mo
9x36
$95.00/mo
10x15
$100.00/mo
11x20
$100.00/mo
10x11
$106.00/mo
5x5
$110.00/mo
5x9
$110.00/mo
10x12
$110.00/mo
9x11
$125.00/mo
11x24
$125.00/mo
10x15
$127.00/mo
10x10
$130.00/mo
10x21
$135.00/mo
10x9
$149.00/mo
10x11
$155.00/mo
10x11
$160.00/mo
9x10
$169.00/mo
10x12
$169.00/mo
11x32
$170.00/mo
9.5x13.5
$177.00/mo
9.5x15
$185.00/mo
10x15
$189.00/mo
10x30
$199.00/mo
10x20
$239.00/mo
10x30
$255.00/mo
12x30
$269.00/mo