Jsoup
を使用して、ログインしたときにのみ使用できるページをクロールしたいと思います。これは、1ページにサインインして別のページにCookieを送信する必要があることを意味します。
私はいくつかの以前の記事hereを読み、次のコードを記述します。Jsoupを使用してサインインしてデータをクロールする
public static void main(String[] args) throws IOException {
Connection.Response res = Jsoup.connect("login.yahoo.com")
.data("login", "myusername", "passwd", "mypassword")
.method(Method.POST)
.execute();
Document doc=res.parse();
String sessionId = res.cookie("SESSIONID");
Document doc2 = Jsoup.connect("http://health.groups.yahoo.com/group/asthma/messages")
.cookie("SESSIONID", sessionId)
.get();
Elements Eles=doc2.getElementsByClass("message");
String content=Eles.first().text();
System.out.println(content);
私の質問は、私は私のログイン情報を送信するためにここに私のクッキーの名前(すなわち「SESSIONID」)を知ることができる方法ですか?私はそれらを1つずつ試してみました
PH
Y
F
に
B
DK
YM
T:私は、ログインページから、すべてのクッキーを取得するために.cookies()
メソッドを使用しました1つではなく、どれも働かなかった。私はいくつかのセッションIDを得ることができましたが、2番目のページからノードを正常に取得できませんでした。つまり、ログインに成功しなかったことを意味します。どうもありがとう!私はあなたがこの問題のために働く願うConnection.Response res = Jsoup.connect("https://login.yahoo.com/config/login?") .data("login", "myusername", "passwd", "mypassword") .method(Method.POST) .execute(); Map<String, String> cookies = res.cookies(); Connection connection = Jsoup.connect("http://health.groups.yahoo.com/group/asthma/messages"); for (Map.Entry<String, String> cookie : cookies.entrySet()) { connection.cookie(cookie.getKey(), cookie.getValue()); } Document doc= connection.get(); // #code selector // Example // Element e=doc.select(".ygrp-grdescr").first(); // System.out.println(e.text()); // Print => This list will be for asthmatics, and anyone whose life is affected by it. Discussions include causes, problems, and treatment
:
Yahooには多くのCookieがあり、httpsでのログインやその他のセキュリティの影響があります。 – vikiiii