Facility: 109362
Self-Storage at U-Haul
- Facility ID
- 109362
- Name
- Self-Storage at U-Haul
- URL
- https://www.uhaul.com/Locations/Self-Storage-near-Biloxi-MS-39532/748074/
- Address
- 12011 Old Highway 67, Biloxi, MS 39532, USA, Biloxi, Mississippi 39532
- Platform
- custom_facility_109362
- Parser File
- src/parsers/custom/facility_109362_parser.py
- Last Scraped
- 2026-03-27 14:08:59.014959
- Created
- 2026-03-14 16:21:53.706708
- Updated
- 2026-03-27 14:08:59.048573
- Parser Status
- ✓ Working
- Status Reason
- N/A
- Last Healing Attempt
- Not attempted
Parser Source (src/parsers/custom/facility_109362_parser.py)
"""Parser for Self-Storage at U-Haul."""
from __future__ import annotations
import re
from bs4 import BeautifulSoup
from src.parsers.base import BaseParser, ParseResult, UnitResult
class Facility109362Parser(BaseParser):
"""Extract storage units from Self-Storage at U-Haul."""
platform = "custom_facility_109362"
def parse(self, html: str, url: str = "") -> ParseResult:
soup = BeautifulSoup(html, "lxml")
result = ParseResult(platform=self.platform, parser_name=self.__class__.__name__)
containers = soup.select("div.cell")
for container in containers:
unit = UnitResult()
text = container.get_text(separator=" ", strip=True)
# Extract size
size_el = None
size_text = size_el.get_text(strip=True) if size_el else None
if not size_text:
# Fallback: regex on full text
m = re.search(r"(\d+\s*[\'\'\u2032]?\s*[xX\u00d7]\s*\d+\s*[\'\'\u2032]?)", text)
if m:
size_text = m.group(1)
if size_text:
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}
# Extract price
price_el = None
price_text = price_el.get_text(strip=True) if price_el else None
if not price_text:
# Fallback: regex on full text
pm = re.search(r"\$(\d[\d,.]*)", text)
if pm:
price_text = pm.group(0)
if price_text:
pm = re.search(r"\$(\d[\d,.]*)", price_text)
if pm:
unit.price = self.normalize_price(pm.group(1))
unit.description = text[:200]
if unit.size or unit.price:
result.units.append(unit)
if not result.units:
result.warnings.append("No units found")
return result
Scrape Runs (7)
-
exported Run #22152026-03-27 14:08:49.212804 | 62 units | Facility109362Parser | View Data →
-
exported Run #22142026-03-27 14:08:47.897299 | 62 units | Facility109362Parser | View Data →
-
failed Run #22132026-03-27 14:08:19.163642 | 1 failure(s)
-
failed Run #22122026-03-27 14:08:17.843497 | 1 failure(s)
-
exported Run #13722026-03-23 03:10:45.536702 | 65 units | Facility109362Parser | View Data →
-
exported Run #8792026-03-21 19:03:16.338117 | 65 units | Facility109362Parser | View Data →
-
exported Run #4282026-03-14 16:42:47.727091 | 65 units | Facility109362Parser | View Data →
Run #1372 Details
- Status
- exported
- Parser Used
- Facility109362Parser
- Platform Detected
- storageunitsoftware
- Units Found
- 65
- Stage Reached
- exported
- Timestamp
- 2026-03-23 03:10:45.536702
Timing
| Stage | Duration |
|---|---|
| Fetch | 5979ms |
| Detect | 264ms |
| Parse | 109ms |
| Export | 9ms |
Snapshot: 109362_20260323T031051Z.html · Show Snapshot · Open in New Tab
Parsed Units (65)
5' x 5'
5' x 5'
5' x 5'
5' x 5'
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
5' x 10'
5' x 10'
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
10' x 10'
10' x 10'
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
10' x 15'
10' x 15'
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
10' x 20'
10' x 20'
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
10' x 30'
10' x 30'
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
10' x 35'
10' x 35'
Unknown Size
Unknown Size
Unknown Size
Unknown Size
Unknown Size
5' x 8'
Unknown Size
8' x 5'
Unknown Size
Unknown Size
Unknown Size
All Failures for this Facility (2)
Message: timeout: Timed out receiving message from renderer: -0.002 (Session info: chrome=146.0.7680.164) Stacktrace: #0 0x55688f1ca87e <unknown> #1 0x55688eb881d2 <unknown> #2 0x55688eb731fc <unknown> #3 0x55688eb72fe9 <unknown> #4 0x55688eb715e6 <unknown> #5 0x55688eb71a96 <unknown> #6 0x55688eb800f7 <unknown> #7 0x55688eb9577d <unknown> #8 0x55688eb9b02b <unknown> #9 0x55688eb720a1 <unknown> #10 0x55688eb955bf <unknown> #11 0x55688ec1786a <unknown> #12 0x55688ebf7a03 <unknown> #13 0x55688ebc85d5 <unknown> #14 0x55688ebc91c1 <unknown> #15 0x55688f18eec0 <unknown> #16 0x55688f192188 <unknown> #17 0x55688f191c3a <unknown> #18 0x55688f1925f5 <unknown> #19 0x55688f17e8ab <unknown> #20 0x55688f192957 <unknown> #21 0x55688f1667e6 <unknown> #22 0x55688f1b7855 <unknown> #23 0x55688f1b7a4c <unknown> #24 0x55688f1c933a <unknown> #25 0x7f29968621f5 <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.002
(Session info: chrome=146.0.7680.164)
Stacktrace:
#0 0x55688f1ca87e <unknown>
#1 0x55688eb881d2 <unknown>
#2 0x55688eb731fc <unknown>
#3 0x55688eb72fe9 <unknown>
#4 0x55688eb715e6 <unknown>
#5 0x55688eb71a96 <unknown>
#6 0x55688eb800f7 <unknown>
#7 0x55688eb9577d <unknown>
#8 0x55688eb9b02b <unknown>
#9 0x55688eb720a1 <unknown>
#10 0x55688eb955bf <unknown>
#11 0x55688ec1786a <unknown>
#12 0x55688ebf7a03 <unknown>
#13 0x55688ebc85d5 <unknown>
#14 0x55688ebc91c1 <unknown>
#15 0x55688f18eec0 <unknown>
#16 0x55688f192188 <unknown>
#17 0x55688f191c3a <unknown>
#18 0x55688f1925f5 <unknown>
#19 0x55688f17e8ab <unknown>
#20 0x55688f192957 <unknown>
#21 0x55688f1667e6 <unknown>
#22 0x55688f1b7855 <unknown>
#23 0x55688f1b7a4c <unknown>
#24 0x55688f1c933a <unknown>
#25 0x7f29968621f5 <unknown>
Message: timeout: Timed out receiving message from renderer: -0.002 (Session info: chrome=146.0.7680.164) Stacktrace: #0 0x5559f97db87e <unknown> #1 0x5559f91991d2 <unknown> #2 0x5559f91841fc <unknown> #3 0x5559f9183fe9 <unknown> #4 0x5559f91825e6 <unknown> #5 0x5559f9182a96 <unknown> #6 0x5559f91910f7 <unknown> #7 0x5559f91a677d <unknown> #8 0x5559f91ac02b <unknown> #9 0x5559f91830a1 <unknown> #10 0x5559f91a65bf <unknown> #11 0x5559f922886a <unknown> #12 0x5559f9208a03 <unknown> #13 0x5559f91d95d5 <unknown> #14 0x5559f91da1c1 <unknown> #15 0x5559f979fec0 <unknown> #16 0x5559f97a3188 <unknown> #17 0x5559f97a2c3a <unknown> #18 0x5559f97a35f5 <unknown> #19 0x5559f978f8ab <unknown> #20 0x5559f97a3957 <unknown> #21 0x5559f97777e6 <unknown> #22 0x5559f97c8855 <unknown> #23 0x5559f97c8a4c <unknown> #24 0x5559f97da33a <unknown> #25 0x7fd4474e11f5 <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.002
(Session info: chrome=146.0.7680.164)
Stacktrace:
#0 0x5559f97db87e <unknown>
#1 0x5559f91991d2 <unknown>
#2 0x5559f91841fc <unknown>
#3 0x5559f9183fe9 <unknown>
#4 0x5559f91825e6 <unknown>
#5 0x5559f9182a96 <unknown>
#6 0x5559f91910f7 <unknown>
#7 0x5559f91a677d <unknown>
#8 0x5559f91ac02b <unknown>
#9 0x5559f91830a1 <unknown>
#10 0x5559f91a65bf <unknown>
#11 0x5559f922886a <unknown>
#12 0x5559f9208a03 <unknown>
#13 0x5559f91d95d5 <unknown>
#14 0x5559f91da1c1 <unknown>
#15 0x5559f979fec0 <unknown>
#16 0x5559f97a3188 <unknown>
#17 0x5559f97a2c3a <unknown>
#18 0x5559f97a35f5 <unknown>
#19 0x5559f978f8ab <unknown>
#20 0x5559f97a3957 <unknown>
#21 0x5559f97777e6 <unknown>
#22 0x5559f97c8855 <unknown>
#23 0x5559f97c8a4c <unknown>
#24 0x5559f97da33a <unknown>
#25 0x7fd4474e11f5 <unknown>