AzLearn

تمرين إعادة البناء

باني خريطة موقع محلية

ابنِ ملف sitemap XML من ملفات HTML محلية دون طلبات شبكة.

python ~25 دقيقة متوسط
أعد بناء الكود Rebuild

هذا هو الكود. اكتبه بنفسك.

الكود المرجعي
import argparse
import html
from pathlib import Path


def page_url(root: Path, page: Path, base_url: str) -> str:
    relative = page.relative_to(root).with_suffix("").as_posix()
    if relative.endswith("/index"):
        relative = relative[:-6]
    return f"{base_url.rstrip('/')}/{relative.lstrip('/')}"


def build_sitemap(root: Path, base_url: str) -> str:
    urls = [page_url(root, path, base_url) for path in sorted(root.rglob("*.html"))]
    lines = ['<?xml version="1.0" encoding="UTF-8"?>', '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">']
    for url in urls:
        lines.append("  <url>")
        lines.append(f"    <loc>{html.escape(url)}</loc>")
        lines.append("  </url>")
    lines.append("</urlset>")
    return "\n".join(lines) + "\n"


def main() -> None:
    parser = argparse.ArgumentParser(description="Build a sitemap from local HTML files.")
    parser.add_argument("root", type=Path)
    parser.add_argument("base_url")
    parser.add_argument("output", type=Path)
    args = parser.parse_args()
    args.output.write_text(build_sitemap(args.root, args.base_url), encoding="utf-8")
    print(f"Wrote {args.output}")


if __name__ == "__main__":
    main()
اكتب هنا