Facility: 038568

Acton Storage Llc

Stale Data Warning: This facility has not been successfully scraped in 30 days (threshold: 3 days). Data may be outdated.
Facility Information error
Facility ID
038568
Name
Acton Storage Llc
URL
http://www.acton-storage.com/
Address
6585 Mainwaring Rd, Acton, MT 59002, USA, Acton, Montana 59002
Platform
custom_facility_038568
Parser File
src/parsers/custom/facility_038568_parser.py
Last Scraped
2026-03-23 03:03:40.164238
Created
2026-03-14 16:21:53.706708
Updated
2026-03-27 14:01:44.335662
Parser & Healing Diagnosis needs_fix
Parser Status
⚠ Needs Fix
Status Reason
Parser returned 0 units
Last Healing Attempt
Not attempted
Parser Source (src/parsers/custom/facility_038568_parser.py)
"""Parser for Acton Storage Llc."""

from __future__ import annotations

import re

from bs4 import BeautifulSoup

from src.parsers.base import BaseParser, ParseResult, UnitResult


class Facility038568Parser(BaseParser):
    """Extract storage units from Acton Storage Llc using regex fallback."""

    platform = "custom_facility_038568"

    _UNIT_RE = re.compile(
        r"(\d+\s*[\'\'\u2032]?\s*[xX\u00d7]\s*\d+\s*[\'\'\u2032]?)"
        r"[^\$]{0,100}"
        r"\$(\d[\d,.]*)",
        re.DOTALL,
    )

    def parse(self, html: str, url: str = "") -> ParseResult:
        soup = BeautifulSoup(html, "lxml")
        result = ParseResult(platform=self.platform, parser_name=self.__class__.__name__)

        # Remove script/style noise
        for tag in soup.find_all(["script", "style"]):
            tag.decompose()

        body_text = soup.get_text(separator="\n")

        seen = set()
        for m in self._UNIT_RE.finditer(body_text):
            size_text = m.group(1).strip()
            price_text = m.group(2).strip()

            key = (size_text, price_text)
            if key in seen:
                continue
            seen.add(key)

            unit = UnitResult()
            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}
            unit.price = self.normalize_price(price_text)
            unit.description = m.group(0).strip()[:200]

            if unit.size or unit.price:
                result.units.append(unit)

        if not result.units:
            result.warnings.append("No units found via regex")

        return result

Scrape Runs (5)

Run #806 Details

Status
exported
Parser Used
Facility038568Parser
Platform Detected
unknown
Units Found
1
Stage Reached
exported
Timestamp
2026-03-21 18:55:19.568575
Timing
Stage Duration
Fetch3092ms
Detect19ms
Parse9ms
Export3ms

Snapshot: 038568_20260321T185522Z.html · Show Snapshot · Open in New Tab

Parsed Units (1)

10 x 20

$75.00/mo

All Failures for this Facility (3)

fetch WebDriverException website dns_resolution permanent Run #2066 | 2026-03-27 14:01:44.317273

Message: unknown error: net::ERR_NAME_NOT_RESOLVED (Session info: chrome=146.0.7680.164) Stacktrace: #0 0x555e4a93887e <unknown> #1 0x555e4a2f61d2 <unknown> #2 0x555e4a2ef874 <unknown> #3 0x555e4a2e14cc <unknown> #4 0x555e4a2e2f10 <unknown> #5 0x555e4a2e1812 <unknown> #6 0x555e4a2e1091 <unknown> #7 0x555e4a2e0fe9 <unknown> #8 0x555e4a2df5e6 <unknown> #9 0x555e4a2df8fa <unknown> #10 0x555e4a2fa1b6 <unknown> #11 0x555e4a385f04 <unknown> #12 0x555e4a365c42 <unknown> #13 0x555e4a38591f <unknown> #14 0x555e4a365a03 <unknown> #15 0x555e4a3365d5 <unknown> #16 0x555e4a3371c1 <unknown> #17 0x555e4a8fcec0 <unknown> #18 0x555e4a900188 <unknown> #19 0x555e4a8ffc3a <unknown> #20 0x555e4a9005f5 <unknown> #21 0x555e4a8ec8ab <unknown> #22 0x555e4a900957 <unknown> #23 0x555e4a8d47e6 <unknown> #24 0x555e4a925855 <unknown> #25 0x555e4a925a4c <unknown> #26 0x555e4a93733a <unknown> #27 0x7f0cffee71f5 <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.WebDriverException: Message: unknown error: net::ERR_NAME_NOT_RESOLVED
  (Session info: chrome=146.0.7680.164)
Stacktrace:
#0 0x555e4a93887e <unknown>
#1 0x555e4a2f61d2 <unknown>
#2 0x555e4a2ef874 <unknown>
#3 0x555e4a2e14cc <unknown>
#4 0x555e4a2e2f10 <unknown>
#5 0x555e4a2e1812 <unknown>
#6 0x555e4a2e1091 <unknown>
#7 0x555e4a2e0fe9 <unknown>
#8 0x555e4a2df5e6 <unknown>
#9 0x555e4a2df8fa <unknown>
#10 0x555e4a2fa1b6 <unknown>
#11 0x555e4a385f04 <unknown>
#12 0x555e4a365c42 <unknown>
#13 0x555e4a38591f <unknown>
#14 0x555e4a365a03 <unknown>
#15 0x555e4a3365d5 <unknown>
#16 0x555e4a3371c1 <unknown>
#17 0x555e4a8fcec0 <unknown>
#18 0x555e4a900188 <unknown>
#19 0x555e4a8ffc3a <unknown>
#20 0x555e4a9005f5 <unknown>
#21 0x555e4a8ec8ab <unknown>
#22 0x555e4a900957 <unknown>
#23 0x555e4a8d47e6 <unknown>
#24 0x555e4a925855 <unknown>
#25 0x555e4a925a4c <unknown>
#26 0x555e4a93733a <unknown>
#27 0x7f0cffee71f5 <unknown>

fetch WebDriverException website dns_resolution permanent Run #2067 | 2026-03-27 14:01:44.316549

Message: unknown error: net::ERR_NAME_NOT_RESOLVED (Session info: chrome=146.0.7680.164) Stacktrace: #0 0x560c1dcc387e <unknown> #1 0x560c1d6811d2 <unknown> #2 0x560c1d67a874 <unknown> #3 0x560c1d66c4cc <unknown> #4 0x560c1d66df10 <unknown> #5 0x560c1d66c812 <unknown> #6 0x560c1d66c091 <unknown> #7 0x560c1d66bfe9 <unknown> #8 0x560c1d66a5e6 <unknown> #9 0x560c1d66a8fa <unknown> #10 0x560c1d6851b6 <unknown> #11 0x560c1d710f04 <unknown> #12 0x560c1d6f0c42 <unknown> #13 0x560c1d71091f <unknown> #14 0x560c1d6f0a03 <unknown> #15 0x560c1d6c15d5 <unknown> #16 0x560c1d6c21c1 <unknown> #17 0x560c1dc87ec0 <unknown> #18 0x560c1dc8b188 <unknown> #19 0x560c1dc8ac3a <unknown> #20 0x560c1dc8b5f5 <unknown> #21 0x560c1dc778ab <unknown> #22 0x560c1dc8b957 <unknown> #23 0x560c1dc5f7e6 <unknown> #24 0x560c1dcb0855 <unknown> #25 0x560c1dcb0a4c <unknown> #26 0x560c1dcc233a <unknown> #27 0x7f88ee1b71f5 <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.WebDriverException: Message: unknown error: net::ERR_NAME_NOT_RESOLVED
  (Session info: chrome=146.0.7680.164)
Stacktrace:
#0 0x560c1dcc387e <unknown>
#1 0x560c1d6811d2 <unknown>
#2 0x560c1d67a874 <unknown>
#3 0x560c1d66c4cc <unknown>
#4 0x560c1d66df10 <unknown>
#5 0x560c1d66c812 <unknown>
#6 0x560c1d66c091 <unknown>
#7 0x560c1d66bfe9 <unknown>
#8 0x560c1d66a5e6 <unknown>
#9 0x560c1d66a8fa <unknown>
#10 0x560c1d6851b6 <unknown>
#11 0x560c1d710f04 <unknown>
#12 0x560c1d6f0c42 <unknown>
#13 0x560c1d71091f <unknown>
#14 0x560c1d6f0a03 <unknown>
#15 0x560c1d6c15d5 <unknown>
#16 0x560c1d6c21c1 <unknown>
#17 0x560c1dc87ec0 <unknown>
#18 0x560c1dc8b188 <unknown>
#19 0x560c1dc8ac3a <unknown>
#20 0x560c1dc8b5f5 <unknown>
#21 0x560c1dc778ab <unknown>
#22 0x560c1dc8b957 <unknown>
#23 0x560c1dc5f7e6 <unknown>
#24 0x560c1dcb0855 <unknown>
#25 0x560c1dcb0a4c <unknown>
#26 0x560c1dcc233a <unknown>
#27 0x7f88ee1b71f5 <unknown>

parse _WarningAsException scraper no_units_extracted warning Run #N/A | 2026-03-23 03:03:40.159946

No units extracted for 038568

Stack trace
src.reporting.failure_reporter._WarningAsException: No units extracted for 038568

← Back to dashboard