Facility: 102841
The Storage Place
- Facility ID
- 102841
- Name
- The Storage Place
- URL
- https://thestorageplace.org/storage-units/texas/waxahachie/fm-66
- Address
- 1812 Fm 66, Waxahachie, TX 75167, USA, Waxahachie, Texas 75167
- Platform
- custom_facility_102841
- Parser File
- src/parsers/custom/facility_102841_parser.py
- Last Scraped
- 2026-03-27 13:42:47.099821
- Created
- 2026-03-23 02:35:08.816820
- Updated
- 2026-03-27 13:42:47.129202
- Parser Status
- ✓ Working
- Status Reason
- N/A
- Last Healing Attempt
- Not attempted
Parser Source (src/parsers/custom/facility_102841_parser.py)
"""Parser for The Storage Place - Waxahachie (Storagely platform)."""
from __future__ import annotations
import re
from bs4 import BeautifulSoup
from src.parsers.base import BaseParser, ParseResult, UnitResult
class Facility102841Parser(BaseParser):
"""Extract storage units from The Storage Place Waxahachie (Storagely)."""
platform = "custom_facility_102841"
def parse(self, html: str, url: str = "") -> ParseResult:
soup = BeautifulSoup(html, "lxml")
result = ParseResult(platform=self.platform, parser_name=self.__class__.__name__)
rows = soup.select("div.listviewrows")
for row in rows:
unit = UnitResult()
# Extract size from h2.widthHeight containing <yy> and <xx> elements
wh = row.select_one("h2.widthHeight")
if wh:
yy = wh.select_one("yy")
xx = wh.select_one("xx")
w_text = yy.get_text(strip=True).replace("WIDTH", "").strip() if yy else ""
d_text = xx.get_text(strip=True).replace("DEPTH", "").strip() if xx else ""
if w_text and d_text:
unit.size = f"{w_text} x {d_text}"
w, ln, sq = self.normalize_size(unit.size)
if w is not None:
unit.metadata = {"width": w, "length": ln, "sqft": sq}
# Extract unit type (Climate Control, Drive Up, etc.)
type_el = row.select_one("div.unit-type-listing-name")
if type_el:
# Get just the first text node (not the hidden span)
unit_type = type_el.contents[0].strip() if type_el.contents else ""
if unit_type:
unit.description = unit_type
# Extract prices from priceSection
price_section = row.select_one("div.priceSection")
if price_section:
# Sale/promo price
sale_price_el = price_section.select_one("h3.actualMoPrice")
if sale_price_el:
price_text = sale_price_el.get_text(strip=True)
pm = re.search(r"\$(\d[\d,.]*)", price_text)
if pm:
unit.sale_price = self.normalize_price(pm.group(1))
# Regular price (without discount)
reg_price_el = price_section.select_one("h3.withoutDiscntprice")
if reg_price_el:
reg_text = reg_price_el.get_text(strip=True)
pm = re.search(r"\$(\d[\d,.]*)", reg_text)
if pm:
unit.price = self.normalize_price(pm.group(1))
# If no regular price, use sale price as regular
if unit.price is None and unit.sale_price is not None:
unit.price = unit.sale_price
unit.sale_price = None
# Extract promotion text
promo_el = row.select_one("span.offer__content")
if promo_el:
unit.promotion = promo_el.get_text(strip=True)
if unit.size or unit.price:
result.units.append(unit)
if not result.units:
result.warnings.append("No units found")
return result
Scrape Runs (3)
Run #1062 Details
- Status
- exported
- Parser Used
- Facility102841Parser
- Platform Detected
- ccstorage
- Units Found
- 20
- Stage Reached
- exported
- Timestamp
- 2026-03-23 02:42:45.091483
Timing
| Stage | Duration |
|---|---|
| Fetch | 13643ms |
| Detect | 423ms |
| Parse | 195ms |
| Export | 9ms |
Snapshot: 102841_20260323T024258Z.html · Show Snapshot · Open in New Tab
Parsed Units (20)
5' x 5'
$20.00/mo
Street: $39.00
10' x 5'
$37.00/mo
Street: $74.00
5' x 10'
$60.00/mo
Street: $119.00
10' x 10'
$55.00/mo
Street: $109.00
10' x 10'
$80.00/mo
Street: $159.00
10' x 15'
$51.00/mo
Street: $101.00
10' x 15'
$115.00/mo
Street: $229.00
10' x 20'
$85.00/mo
Street: $169.00
10' x 20'
$155.00/mo
Street: $309.00
10' x 30'
$125.00/mo
Street: $249.00
12' x 25'
$150.00/mo
Street: $300.00
13' x 25'
$50.00/mo
Street: $99.00
10' x 40'
$50.00/mo
Street: $99.00
12' x 75'
$60.00/mo
Street: $119.00
9' x 11'
$0.00/mo
30' x 11'
$110.00/mo
Street: $220.00
8' x 45'
$71.00/mo
Street: $142.00
15' x 30'
$165.00/mo
Street: $329.00
50' x 40'
$4235.00/mo
Street: $8470.00
50' x 110'
$4235.00/mo
Street: $8470.00