Files
AR-House/scripts/probe_miamidade_pa.py
T
2026-07-03 12:24:58 -04:00

73 lines
2.7 KiB
Python

"""Probe Miami-Dade PA portal — map ALL extractable fields.
URL: apps.miamidadepa.gov/PropertySearch/
"""
from pathlib import Path
import time
def probe():
from playwright.sync_api import sync_playwright
out_dir = Path(__file__).parent.parent / "_probe_out" / "mdpa"
out_dir.mkdir(parents=True, exist_ok=True)
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
ctx = browser.new_context(
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/131",
)
page = ctx.new_page()
print("[1] Loading landing page...")
page.goto("https://apps.miamidadepa.gov/PropertySearch/",
wait_until="domcontentloaded", timeout=30000)
time.sleep(8)
print(f" URL: {page.url}")
print(f" Title: {page.title()}")
# Visible inputs
print("\n[2] Visible inputs:")
for inp in page.locator("input:visible, select:visible").all()[:25]:
try:
tag = inp.evaluate("el => el.tagName.toLowerCase()")
id_ = inp.get_attribute("id") or ""
name = inp.get_attribute("name") or ""
type_ = inp.get_attribute("type") or ""
placeholder = inp.get_attribute("placeholder") or ""
aria = inp.get_attribute("aria-label") or ""
if type_ == "hidden":
continue
print(f" <{tag}> id={id_!r} name={name!r} type={type_!r} placeholder={placeholder!r} aria={aria!r}")
except Exception:
pass
# Buttons visible
print("\n[3] Visible buttons (first 10):")
for btn in page.locator("button:visible, a.button:visible, input[type=submit]:visible").all()[:10]:
try:
txt = (btn.inner_text() or btn.get_attribute("value") or "").strip()[:50]
btn_id = btn.get_attribute("id") or ""
print(f" text={txt!r} id={btn_id!r}")
except Exception:
pass
# Test search by a known Miami-Dade address.
# Use a famous address: "1 NE 1 St Miami FL 33132" (Miami courthouse)
# Or pick from the inputs we found.
# Save full HTML
(out_dir / "01_landing.html").write_text(page.content(), encoding="utf-8")
page.screenshot(path=str(out_dir / "01_landing.png"), full_page=True)
print(f"\n[4] Saved landing to {out_dir}/")
# Check for SPA framework hints
body_text = page.inner_text("body")[:500]
print(f"\n[5] Body preview: {body_text[:400].encode('ascii','replace').decode('ascii')}")
browser.close()
if __name__ == "__main__":
probe()