Elixir:
Hämta en webbsida
How to:
Elixir gör det lätt att ladda ner webbsidor med hjälp av biblioteket HTTPoison. Här är ett enkelt exempel som visar hur du gör:
# Först, lägg till HTTPoison i din mix.exs fil
defp deps do
[
{:httpoison, "~> 1.8"}
]
end
# Kör sedan mix deps.get för att installera beroenden.
# Efter det, använd följande kod för att ladda ner en webbsida:
HTTPoison.start()
case HTTPoison.get("https://example.com") do
{:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
IO.puts("Innehållet på sidan: #{body}")
{:ok, %HTTPoison.Response{status_code: status_code}} ->
IO.puts("Kunde inte ladda sidan. Statuskod: #{status_code}")
{:error, %HTTPoison.Error{reason: reason}} ->
IO.puts("Ett fel uppstod: #{reason}")
end
Exempel på utskrift:
Innehållet på sidan: <!doctype html> ...
Deep Dive
Förr i tiden användes ofta inbyggda funktioner som :httpc
i Erlang för att ladda ner webbsidor i Elixir. Nuförtiden är HTTPoison det populärare valet eftersom det erbjuder en mer användarvänlig syntax och hanterar många av de komplexiteter som är förknippade med HTTP-kommunikation.
Alternativet till HTTPoison kan vara bibliotek som Tesla eller Req som också tillhandahåller enkelhet och flexibilitet i att göra HTTP-förfrågningar.
När du implementerar nedladdning av en webbsida, glöm inte att hantera olika HTTP-statuskoder och potentiella fel på ett elegant sätt. Det är också viktigt att respektera webbsidors robot.txt filer och använda rätt user-agent strängar så att din skrapning är ansvarsfull.
See Also
- HTTPoison dokumentation: https://hexdocs.pm/httpoison/HTTPoison.html
- Elixir School för att lära dig mer om Elixir: https://elixirschool.com/en/
- “Programming Phoenix” bok för mer djupgående webbutveckling med Elixir: https://pragprog.com/titles/phoenix14/programming-phoenix-1-4/