ログインが必要なページからjsoupでスクレイピングする方法【Java】

Java

jsoupを使ってログインが必要なページからスクレイピングするには、ログインページにログインを実行して返されたレスポンスにふくまれるクッキーを使う方法があります。

サンプルソースコード

public class Jsoup { public static void main(String[] args) { Document document; // ユーザ名・パスワード final String USERNAME = "ユーザ名"; final String PASS = "パスワード"; // ログインページのURL final String LOGIN_URL = "ログインURL"; String mainUrl = "ログインした状態でアクセスしたいURL" // ユーザーエージェント final String UA = "ユーザーエージェント"; try { // ログインページからレスポンスを取得 Connection.Response response = Jsoup.connect(LOGIN_URL) .method(Connection.Method.GET) .execute(); response = Jsoup.connect(LOGIN_URL) .data("フォームのname(user名)", USERNAME, "フォームのname(パスワード)", PASS) .userAgent(UA) .cookies(response.cookies()) .method(Connection.Method.POST) .execute(); // ログインページから取得したクッキーを使ってアクセス document = Jsoup.connect(mainUrl) .userAgent(UA) .cookies(response.cookies()) .get(); } catch (IOException e) { e.printStackTrace(); } }

定数を使っていますが特に意味はありません。変数でも大丈夫です。

まずresponseにログインページからのレスポンスを代入し、実際にスクレイピングをおこないたいURLに対してcookiesメソッドの引数としてresponse.cookiesメソッドで渡してやることで、ログイン状態を維持してdocumentを取得できます。

また、フォームのnameというのはname属性の値のことです。

「name=”login[user]”」みたいなやつですね。

広告

関連記事

新着記事

広告

FBXデータをイチからVRChat用にセットアップした【アイトラッキング】
VRChatのワールドを軽量化する方法