KotlinでスクレイピングとWebサーバーを開発する手順を書いていきます。
# 開発環境構築
$ brew install --cask temurin
$ brew install gradle
$ brew install kotlin
# プロジェクトのディレクトリ作成
$ mkdir scraping_server
$ cd scraping_server
# プロジェクトの初期化
$ gradle init --type kotlin-application
$ gradle init –type kotlin-application
のコマンドが実行完了したら、以下のファイルが作成されていることを確認してください。この2つのファイルを編集して開発を進めていきます。
app/build.grade.kts
ファイルの dependencies { … }
の中に、以下の行を追加してください。
implementation("com.sparkjava:spark-kotlin:1.0.0-alpha")
implementation("it.skrape:skrapeit:+")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2")
インストールしている外部パッケージは以下のものです。
App.kt を以下の内容に変更します。
package scraping_server
import spark.kotlin.*
fun main(args: Array<String>) {
val http: Http = ignite().port(3000)
http.get("/") {
"test"
}
}
その後、以下コマンドを実行してから http://localhost:3000 にブラウザでアクセスすると、”test” の文字が表示されます。
$ gradle run
これで、Webサーバーの起動ができました。
スクレイピングで取得した情報を表示する
App.kt
に以下の実装を追加します。
package scraping_server
import spark.kotlin.*
// パッケージを追加する
import it.skrape.core.htmlDocument
import it.skrape.fetcher.HttpFetcher
import it.skrape.fetcher.response
import it.skrape.fetcher.skrape
import it.skrape.selects.eachText
import kotlinx.serialization.*
import kotlinx.serialization.json.*
// 関数を追加する
fun scraping(): String {
var items: List<String> = emptyList()
skrape(HttpFetcher) {
request {
url = "https://en.wikipedia.org/wiki/List_of_programming_languages"
}
response {
htmlDocument {
items = ".div-col li" { findAll { eachText } }
}
}
}
return Json.encodeToString(items)
}
fun main(args: Array<String>) {
val http: Http = ignite().port(3000)
http.get("/") {
// 追加した関数を使用する
scraping()
}
}
追加実装の後、 $ gradle run を再実行して http://localhost:3000 にアクセスすると、 Wikipediaのページから取得したプログラミング言語一覧の文字が表示されるようになります。