تمرين إعادة البناء
باني خريطة موقع محلية
ابنِ ملف 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()اكتب هنا