Elixir:
ウェブページのダウンロード
How to: (やり方)
Elixirを用いてHTTPのリクエストを送り、Webページの内容を取得する例を見てみましょう。HTTPoison
などのパッケージを使用します。
# HTTPoisonパッケージを使う準備
defp deps do
[
{:httpoison, "~> 1.8"}
]
end
# Webページをダウンロードする関数
def download_web_page(url) do
case HTTPoison.get(url) do
{:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
{:ok, body}
{:ok, %HTTPoison.Response{status_code: status_code}} ->
{:error, "Failed to fetch. Status code: #{status_code}"}
{:error, %HTTPoison.Error{reason: reason}} ->
{:error, "Error: #{reason}"}
end
end
# 使ってみよう
{:ok, content} = download_web_page("https://example.com")
Deep Dive (深掘り)
過去にはHTTPoison
の前にHTTPotion
やErlangのhttpc
モジュールが使われていました。HTTPoison
はErlangのhackney
ライブラリをラップして使いやすくしています。他の選択肢としては、Elixirの標準ライブラリに含まれるHTTP
クライアントや最近人気のTesla
などもあります。
Webページをダウンロードする際には、サーバーへの負荷や法律、プライバシーへの配慮も必要です。やり過ぎない、適正な規模でのデータ収集を心がけましょう。
See Also (関連情報)
- HTTPoison GitHub: https://github.com/edgurgel/httpoison
- Hackney GitHub: https://github.com/benoitc/hackney
- Tesla GitHub: https://github.com/teamon/tesla
- Elixir SchoolのHTTP要求: https://elixirschool.com/jp/lessons/libraries/http/