🙄
【Kotlin】JSoupでPostの結果HTMLを取得する
概要
JSoupはJavaでHTMLのスクレイピングをする際に、結構使われるライブラリです。使い方等は[Kotlin] JSoupを使ってHTML解析する方法を参照頂ければイメージがつくと思いますが、JavaのライブラリなのでKotlinでも使用することができます。
今回はKotlinでJsoupを使って、Postのでリクエストを行った後の、HTMLの結果を受け取る方法を紹介したいと思います。
対応
Javaの記事になりますが、How to login to a website using Jsoup (Java)にある通り、Jsoupではmethod
でPostを指定したり、data
でformDataを設定することができます。また、JSoup Post Request encodingの記事にある通り、Postデータのエンコーディングも設定可能です。
実装サンプル
あくまでサンプルですが、IDとパスワードをPostデータとして送り、HTMLを取得する実装を紹介します。
import org.jsoup.Connection
import org.jsoup.Jsoup
import org.jsoup.nodes.Document
fun getHtmlDocWithForm(url: String, id: String, pw: String): Document? {
// Postのデータをセット
val formData = HashMap<String, String>()
formData.put("id", id);
formData.put("password", pw);
// 結果取得
Jsoup.connect(url)
.method(Connection.Method.POST)
.data(formData)
.ignoreHttpErrors(true)
.timeout(10 * 1000)
.header("Content-Type", "application/x-www-form-urlencoded")
.postDataCharset("UTF-8")
.execute()
.parse()
}
Discussion