Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Fonzit-crawler

crawler.livemd

Fonzit-crawler

Mix.install([
  {:kino, "~> 0.14.0"},
  {:floki, "~> 0.33.0"},
  {:httpoison, "~> 2.2.1"}
])

Tietojen haku

input =
  Kino.Input.text("Anna osoite", default: "https://fonzit.fi/meista/tiimi")
defmodule FonzitSivut do
  def get_henkiloesittelyt(osoite) do
    HTTPoison.get(osoite, [], follow_redirect: true)
    |> then(fn {_, result} -> result.body end)
    |> Floki.parse_document!()
    |> Floki.find("li.d-tiimi a")
    |> Floki.attribute("href")
    |> Stream.map(&HTTPoison.get/1)
    |> Stream.map(fn {_, result} -> result.body end)
    |> Stream.map(&Floki.parse_document!/1)
    |> Stream.map(&Floki.find(&1, "#main"))
    |> Stream.map(&Floki.text/1)
  end
end
osoite = Kino.Input.read(input)

tekstit =
  FonzitSivut.get_henkiloesittelyt(osoite)
  |> Enum.join("\n\n")

Kino.Download.new(
  fn -> tekstit end,
  filename: "tekstit.txt",
  label: "Lataa tiedostona"
)
Kino.Text.new(tekstit)