# -*- coding: utf-8 -*-

from playwright.sync_api import sync_playwright
import re
import json

TARGET_URL = "https://m.land.naver.com/agency/info/gnomede8700"

def has_article_no(text):
    return bool(re.search(r"(articleNo|atclNo|articleNumber)", text or "", re.I))

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context(
        locale="ko-KR",
        viewport={"width": 1400, "height": 950},
        user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/136.0.0.0 Safari/537.36"
    )

    page = context.new_page()

    def on_response(response):
        try:
            url = response.url
            ct = response.headers.get("content-type", "")

            if "land.naver.com" not in url:
                return

            if "json" not in ct and "text" not in ct:
                return

            text = response.text()

            if (
                has_article_no(text)
                or "realtor" in url
                or "article" in url
                or "atcl" in url
                or "agency" in url
                or "map" in url
                or "list" in url
            ):
                print("\n[URL]", url)
                print("[CONTENT-TYPE]", ct)
                print("[LENGTH]", len(text))
                print("[ARTICLE NOS]", re.findall(r'"(?:atclNo|articleNo|articleNumber)"\s*:\s*"?([0-9]{8,})"?', text)[:20])

        except Exception as e:
            pass

    page.on("response", on_response)

    page.goto(TARGET_URL, wait_until="domcontentloaded", timeout=60000)
    page.wait_for_timeout(5000)

    print("\n브라우저에서 매매/전세/월세 탭을 직접 클릭하고 스크롤을 내려보세요.")
    print("끝나면 콘솔에 찍힌 [URL] 중 articleNo가 많이 나오는 URL을 확인합니다.")

    input("확인 후 Enter 종료...")
    browser.close()