对于一个项目,我试图从仅当您从 Goodreads.com 网站登录时才能访问的网站获取数据。我是 Jsoup 的新手,因为我只将它用于这个特定的项目。从网站获取相关数据不是问题,但我似乎无法访问我需要的特定页面。我尝试访问的页面仅在登录时才可见,未登录时会重定向到登录页面。
我已经查看了这里的答案,但到目前为止给出的答案没有帮助。
我现在拥有的:
String url = "http://www.goodreads.com/friend/user/7493379-judith";
Connection.Response res = Jsoup.connect("http://www.goodreads.com/user/sign_in")
.data("email", "MYEMAIL", "user_password", "MYPASSWORD")
.method(Connection.Method.POST)
.execute();
Document doc2 = res.parse();
String sessionId = res.cookie("_session_id");
Document doc = Jsoup.connect(url)
.cookie("_session_id", sessionId)
.get();
我在此处答案的帮助下得到了到目前为止,但它不起作用,我仍然只是从它重定向到的登录页面获取数据。 我有几个问题:
- 当然最重要的是;我怎样才能让它发挥作用?
- 此处给出的答案使用了 method.(Method.POST) 而不是 method.(Connection.Method.POST) 。然而,当我使用第一个时,我收到一个错误,指出方法无法解析。有谁知道这是为什么吗?
- 我见过的示例在 .data() 中使用了“用户名”和“密码”。这些具体指的是什么?我现在已经使用了输入框的名称。是名称、类型、id 还是什么?由于 Goodreads 并不将登录称为用户名,而是将其称为电子邮件,因此我认为我必须更改它们。 (用户名和密码也不起作用)
- 示例还使用 http://example.com/login.php作为示例网址。不过 Goodreads 没有/login.php 页面。我是否正确地假设我必须在登录屏幕上使用该网址?
- _session_id 是 Goodreads 上相关 Cookie 的名称。
如果有人能指出我正确的方向,我将非常感激!
最佳答案
仔细查看登录时发布的数据:
user[email]:email@email
remember_me:on
user[password]:plain_pasword
n:667387
因此您的帖子必须执行完全相同的键。
2.确保正确导入:import org.jsoup.Connection.Method;
但 Connection.Method.POST 仍然很好。
3.参见第1页
4.是的,你是对的
5.问题是什么?
关于cookies - 使用 Jsoup 登录 Cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9890928/