Facility: 009218
CAR-GO Self Storage Reynoldsburg, OH
- Facility ID
- 009218
- Name
- CAR-GO Self Storage Reynoldsburg, OH
- URL
- https://u-stor.com/self-storage/reynoldsburg-oh-43068-9100/
- Address
- 14653 E Broad St, Reynoldsburg, OH 43068, USA, Reynoldsburg, Ohio 43068
- Platform
- custom_facility_009218
- Parser File
- src/parsers/custom/facility_009218_parser.py
- Last Scraped
- 2026-03-27 13:40:32.553463
- Created
- 2026-03-23 02:35:08.816820
- Updated
- 2026-03-27 13:40:32.579465
- Parser Status
- ✓ Working
- Status Reason
- N/A
- Last Healing Attempt
- Not attempted
Parser Source (src/parsers/custom/facility_009218_parser.py)
"""Parser for CAR-GO Self Storage (u-stor.com, Reynoldsburg OH)."""
from __future__ import annotations
import re
from bs4 import BeautifulSoup
from src.parsers.base import BaseParser, ParseResult, UnitResult
class Facility009218Parser(BaseParser):
"""Extract storage units from CAR-GO Self Storage.
This site uses the DRTS (Directories Pro) WordPress plugin with numbered
field variants per unit. Sizes are in ``data-name`` attributes matching
``entity_field_field_storage_size*``. Descriptions are in similarly named
fields. Prices are not listed on the page (call-for-pricing model).
"""
platform = "custom_facility_009218"
# Matches the data-name attribute values for size fields across all units.
_SIZE_FIELD_RE = re.compile(r"entity_field_field_storage_size")
_DESC_FIELD_RE = re.compile(r"entity_field_field_(description|storage_unit_description)")
_DOOR_FIELD_RE = re.compile(r"entity_field_field_door_types")
def parse(self, html: str, url: str = "") -> ParseResult:
soup = BeautifulSoup(html, "lxml")
result = ParseResult(platform=self.platform, parser_name=self.__class__.__name__)
# Find all size elements by data-name attribute pattern.
size_divs = soup.find_all(
"div",
attrs={"data-name": self._SIZE_FIELD_RE},
)
# Filter to only the content divs (not their parent column wrappers).
# Content divs have class containing "drts-display-element-inlineable".
size_divs = [
div for div in size_divs
if "drts-display-element-inlineable" in div.get("class", [])
]
if not size_divs:
result.warnings.append("No unit size elements found")
return result
for size_div in size_divs:
size_text = size_div.get_text(strip=True)
if not size_text:
continue
w, ln, sqft = self.normalize_size(size_text)
if w is None:
continue
unit = UnitResult(
size=size_text,
url=url,
metadata={"width": w, "length": ln, "sqft": sqft},
)
# Walk up to the parent row (columns container) to find sibling
# description and door-type fields.
row = size_div.find_parent(
"div", class_=re.compile(r"drts-row"),
)
if row:
desc_div = row.find(
"div",
attrs={"data-name": self._DESC_FIELD_RE},
)
if desc_div:
unit.description = desc_div.get_text(strip=True)[:200]
door_div = row.find(
"div",
attrs={"data-name": self._DOOR_FIELD_RE},
)
if door_div:
door_text = door_div.get_text(strip=True)
unit.metadata["door_type"] = door_text
result.units.append(unit)
if not result.units:
result.warnings.append("Size elements found but no valid units extracted")
result.warnings.append("No pricing on page (call-for-pricing model)")
return result
Scrape Runs (3)
Run #1548 Details
- Status
- exported
- Parser Used
- Facility009218Parser
- Platform Detected
- storageunitsoftware
- Units Found
- 6
- Stage Reached
- exported
- Timestamp
- 2026-03-27 13:40:29.532982
Timing
| Stage | Duration |
|---|---|
| Fetch | 2680ms |
| Detect | 53ms |
| Parse | 26ms |
| Export | 20ms |
Snapshot: 009218_20260327T134032Z.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