gpt4 book ai didi

java - 如何连接到站点并使用 java jsoup 检索数据?

转载 作者:搜寻专家 更新时间:2023-11-01 02:12:35 27 4
gpt4 key购买 nike

我知道那里有很多信息,但我找不到适合我的问题的信息。我想从我需要登录的页面收集数据。这是我正在尝试做的事情:

我收集 Cookie 是为了:

Connection.Response res = Jsoup
.connect("http://website.com/login?event=doLogin")
.execute();
Map <String,String> cookies = res.cookies();

然后读取隐藏值的 html:

 Document doc = Jsoup
.connect("http://website.com/login?event=doLogin")
.cookies(cookies)
.get();


html = doc.toString();
length = html.length();
counter = 0;

for (int i = 0; i < length; i++) {
if (html.startsWith("document.write", i)){
name[counter] = html.substring(i + 41, i + 144);
value[counter] = "Login";
counter++;
}
if (html.startsWith("hidden", i)) {
name[counter] = html.substring(i + 13, i + 81);
value[counter] = html.substring(i + 90, i + 123);
counter++;
}
}

最后我想使用这些信息来使用 Cookies 和隐藏值登录:

 Document doc2 = Jsoup
.connect("http://website.com/login?event=doLogin")
.cookies(cookies)
.data("email", "my@email")
.data("pass", "mypass")
.data(name[0], value[0])
.data(name[1], value[1])
.data(name[2], value[2])
.method(Connection.Method.POST)
.get();
System.out.println(doc2);

但我得到的只是登录页面。恐怕这些隐藏的值在我尝试时会被更改:

Document doc2 = Jsoup.connect

我做的对吗?

最佳答案

当您将方法设置为 POST 然后调用 GET 请求时,这是一种混合上下文。试试这个:

Connection.Response res = Jsoup.connect("http://website.com/login?event=doLogin")
.execute();

...

Document doc = Jsoup.connect("http://website.com/login?event=doLogin")
.cookies(res.cookies())
.data("email", "my@email")
.data("pass", "mypass")
.data(name[0], value[0])
.data(name[1], value[1])
.data(name[2], value[2])
.post();

关于java - 如何连接到站点并使用 java jsoup 检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15363569/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com