AzLearn

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

خريطة روابط HTML محلية

استخرج روابط href من ملفات HTML محلية واعرض خريطة بسيطة لكل ملف.

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

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

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


class LinkParser(HTMLParser):
    def __init__(self) -> None:
        super().__init__()
        self.links: list[str] = []

    def handle_starttag(self, tag: str, attrs: list[tuple[str, str | None]]) -> None:
        if tag != "a":
            return
        for name, value in attrs:
            if name == "href" and value:
                self.links.append(value)


def links_in_file(path: Path) -> list[str]:
    parser = LinkParser()
    parser.feed(path.read_text(encoding="utf-8", errors="replace"))
    return parser.links


def main() -> None:
    arg_parser = argparse.ArgumentParser(description="Map href links in local HTML files.")
    arg_parser.add_argument("root", type=Path)
    args = arg_parser.parse_args()

    for path in sorted(args.root.rglob("*.html")):
        links = links_in_file(path)
        if not links:
            continue
        print(path)
        for link in links:
            print(f"  - {link}")


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