Elixir:
פיענוח HTML

איך לעשות:

אליקסיר, עם מודל הבזמניות הנחושה ופרדיגמת התכנות הפונקציונלית שלו, אינה כוללת יכולות פענוח HTML מובנות. עם זאת, ניתן להשתמש בספריות צד שלישי פופולריות כמו Floki למטרה זו. Floki הופכת פענוח HTML לאינטואיטיבי ויעיל, תוך ניצול תכונות התאמת הדפוסים וההעברה של אליקסיר.

ראשית, הוסף את Floki לתלויות mix.exs שלך:

defp deps do
  [
    {:floki, "~> 0.31.0"}
  ]
end

לאחר מכן, הרץ את mix deps.get כדי להתקין את התלות החדשה.

עכשיו, בואו נפרס אכוח רטט פשוט לחילוץ נתונים. נחפש את הכותרות בתוך תגיות <h1>:

html_content = """
<html>
  <body>
    <h1>שלום, אליקסיר!</h1>
    <h1>כותרת נוספת</h1>
  </body>
</html>
"""

titles = html_content
         |> Floki.find("h1")
         |> Floki.text()

IO.inspect(titles)

פלט לדוגמא:

["שלום, אליקסיר!", "כותרת נוספת"]

להעמקה נוספת, נניח שאתם רוצים לחלץ קישורים (תגיות <a>) יחד עם האטריביוטים שלהם. הנה איך אפשר לעשות זאת:

html_content = """
<html>
  <body>
    <a href="https://elixir-lang.org/">האתר הרשמי של אליקסיר</a>
    <a href="https://hexdocs.pm/">HexDocs</a>
  </body>
</html>
"""

links = html_content
        |> Floki.find("a")
        |> Enum.map(fn({_, attrs, [text]}) -> {text, List.keyfind(attrs, "href", 0)} end)
        
IO.inspect(links)

פלט לדוגמא:

[{"האתר הרשמי של אליקסיר", {"href", "https://elixir-lang.org/"}}, {"HexDocs", {"href", "https://hexdocs.pm/"}}]

גישה זו מאפשרת לכם לנווט ולפרס מסמכי HTML ביעילות, והופכת משימות של חילוץ ומניפולציה של נתונים מהאינטרנט לפשוטות ביישומי אליקסיר.