Java Jsoup登录到Moody';s
我在尝试使用Jsoup登录穆迪网站时遇到问题。我对其他网站没有问题,但我在其他情况下的登录方式对Moodys不起作用 这是我的代码:Java Jsoup登录到Moody';s,java,html,cookies,login,jsoup,Java,Html,Cookies,Login,Jsoup,我在尝试使用Jsoup登录穆迪网站时遇到问题。我对其他网站没有问题,但我在其他情况下的登录方式对Moodys不起作用 这是我的代码: Response initialResponse = Jsoup.connect("https://www.moodys.com/login.aspx") .execute(); Response loginResponse = Jsoup.connect("https://www.moodys.c
Response initialResponse = Jsoup.connect("https://www.moodys.com/login.aspx")
.execute();
Response loginResponse = Jsoup.connect("https://www.moodys.com/login.aspx")
.cookies(initialResponse.cookies())
.data("MdcUserName", "username")
.data("MdcPassword", "password")
.method(Method.POST).execute();
doc = Jsoup.connect("any other moody's page")
.cookies(loginResponse.cookies())
.timeout(3000000).get();
System.out.printl(doc.html());
但这是行不通的。我做错了什么?谢谢。基本上,您的代码在URL和post参数中失败 以下是一个工作示例:
public static void main(String[] args) {
try
{
Response initialResponse;
initialResponse = Jsoup.connect("https://www.moodys.com/")
.execute();
Response loginResponse = Jsoup
.connect("https://www.moodys.com/identity/login")
.cookies(initialResponse.cookies())
.data("UserName", "--")
.data("Password", "--")
.data("IsRememberMe", "false")
.method(Method.POST)
.execute();
//example of internal moody's page.
Document doc = Jsoup
.connect(
"https://www.moodys.com/newsandevents/events_/-/-/2/0/elq")
.cookies(loginResponse.cookies()).timeout(3000000).get();
//simple div selection example
System.out
.println(doc
.select("#ctl00_ctl00_MdcWebPartManager_EventsListWebPart_ctl00_ctl00_NoRecordTipsLabel"));
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
输出:
<span id="ctl00_ctl00_MdcWebPartManager_EventsListWebPart_ctl00_ctl00_NoRecordTipsLabel">You have not registered for any upcoming event(s).</span>
您尚未注册任何即将举行的活动。
它是如何工作的?我返回的是登录页面,而不是我要的页面(例如,有一些搜索结果)。@user432我是否应该浏览所有html代码并输入所有隐藏的输入(例如,对于任何“我应该添加”。数据(“名称”,“值”)”到我的connect()如果是这样,我试着这样做smth。但是对于一些隐藏字段,没有“名称”字段。我应该忽略他们吗?或者我应该输入他们的id吗?@Alexey3699106 Nevermind,只是查看了一下他们的网站。他们只发送带有用户名
、密码
和字段IsRememberMe
的帖子。所以最后的帖子看起来是这样的:用户名=&password=&IsRememberMe=false
。帖子是sent tohttps://www.moodys.com/identity/login
而不是https://www.moodys.com/login.aspx
,所以请尝试对其进行大量更改以获得答案。但当我尝试其他需要注册的页面时(例如),它对我不起作用。并且对已登录和已注销的用户都有效。您能告诉我,为什么要使用.data(“用户名”)、“--”)和.data(“密码”、“--”)而不是.data(“MdcUserName”、“--”)和.data(“MdcPassword”、“--”)吗?我试图改变这一点,但我得到了这个异常:org.jsoup.unsupportedAdminTypeException:未处理的内容类型。必须是text/*、application/xml或application/xhtml+xml.Mimetype=application/json;charset=utf-8,URL=at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:178)at Test.main(Test.java:35)你能提供你想要加载的页面吗?我不熟悉Moodys是的,当然。例如,这个页面https://www.moodys.com/page/search.aspx?cy=global&kw=shell&searchfrom=GS&spk=qs&tb=1
(或任何其他搜索页面,搜索仅适用于登录用户).如果你能帮助我,我将不胜感激。我已经浪费了大量时间试图解决这个问题。