#!/usr/bin/env python3
"""Analyze ningguo.gov.cn list page structure"""
import requests
from bs4 import BeautifulSoup

url = 'https://www.ningguo.gov.cn/XxgkContent/showList/383/22474/page_1.html'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}
s = requests.Session()
s.headers.update(headers)

r = s.get(url, timeout=60, verify=False)
if 'token_verified=true' in r.text:
    s.cookies.set('token_verified', 'true')
    r = s.get(url, timeout=60, verify=False)

soup = BeautifulSoup(r.text, 'html.parser')
print(f'Title: {soup.title.get_text(strip=True) if soup.title else "N/A"}')
print(f'Size: {len(r.text)}')

# Find tables
tables = soup.find_all('table')
print(f'\n=== Tables: {len(tables)} ===')
for i, tbl in enumerate(tables[:5]):
    rows = tbl.find_all('tr')
    if len(rows) > 2:
        cls = tbl.get('class', [])
        print(f'Table#{i} class={cls}: {len(rows)} rows')
        for tr in rows[:4]:
            cells = [td.get_text(strip=True)[:30] for td in tr.find_all(['td', 'th'])]
            print(f'  {cells}')
        # Check links
        links = tbl.find_all('a', href=True)
        if links:
            for a in links[:3]:
                print(f'  <a href="{a["href"]}">{a.get_text(strip=True)[:50]}')

# Uls
uls = soup.find_all('ul')
print(f'\n=== UL lists: {len(uls)} ===')
for ul in uls:
    lis = ul.find_all('li', recursive=False)
    if 3 <= len(lis) <= 60:
        a_count = sum(1 for li in lis if li.find('a'))
        if a_count > 2:
            print(f'<ul> with {len(lis)} li ({a_count} with links)')
            for li in lis[:3]:
                print(f'  {li.get_text(strip=True)[:80]}')

# Pagination
print('\n=== Pagination ===')
for tag in soup.find_all(['div', 'span', 'a']):
    txt = tag.get_text(strip=True)
    if '下一页' in txt or '尾页' in txt or '共' in txt:
        tg = tag.name
        cl = tag.get('class', [])
        print(f'<{tg}> class={cl}: {txt[:200]}')
        for a in tag.find_all('a', href=True):
            print(f'  <a href="{a["href"]}">{a.get_text(strip=True)[:30]}')

# Meta info
print('\n=== Meta ===')
for meta in soup.find_all('meta'):
    name = meta.get('name', '')
    content = meta.get('content', '')[:60]
    if name:
        print(f'  {name}: {content}')
