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