在过去的三周里,我试图编写一个程序,该程序登录到网站并循环浏览页面以过滤特定信息(指定表的行/列)。公平地说,这个程序是我认为自己编码(java)的原因。我创建了某种自动填充程序,它可以工作,但速度非常慢,因为它必须再次登录每个页面。因此我在想,为什么我的第一个(以下)程序不起作用。由于某种原因,我能够登录,但是一旦我从登录页面切换到特定页面(只有登录后才能访问),我就会被重定向到登录页面。 为了这个问题,我创建了一个假帐户。也许有人可以帮忙或告诉我在哪里可以进一步阅读这个主题。我猜想 cookies 有问题,但我不确定。
try {
String url1 = "https://www.novaragnarok.com/";
String url2 = "https://www.novaragnarok.com/?module=vending&action=item&id=2499";
Connection.Response res = Jsoup
.connect(url1)
.followRedirects(true)
.data("username", "stackoverflowww", "password", "stackpw")
.method(Method.POST)
.execute();
Map<String, String> cookies = res.cookies();
Document doc = Jsoup.connect(url2)
.cookies(cookies)
.followRedirects(true)
.get();
System.out.println(cookies);
System.out.println(doc);
} catch (IOException e) {
e.printStackTrace();
}
最佳答案
试试这个
String USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)" +
" Chrome/56.0.2924.87 Safari/537.36";
public void parseWebsite(){
try{
Connection.Response homepage = Jsoup.connect("https://www.novaragnarok.com/").userAgent(USER_AGENT)
.method(Connection.Method.GET).timeout(6000).execute();
Connection.Response login = Jsoup.connect("https://www.novaragnarok.com//?module=account&action=login&return_url=")
.cookies(homepage.cookies()).data("txtbox", "stackoverflowww")
.data("password", "stackpw").userAgent(USER_AGENT).method(Connection.Method.POST)
.timeout(6000).execute();
Connection.Response url2 = Jsoup.connect("https://www.novaragnarok.com/?module=vending&action=item&id=2499")
.cookies(login.cookies()).userAgent(USER_AGENT).method(Connection.Method.GET).timeout(6000).execute();
//Your Code here
}catch (SocketException e){
e.printStackTrace();
}
catch (UncheckedIOException e){
e.printStackTrace();
}
catch(Exception e){
}
}
}
关于java - 自动登录网站,保持登录状态,并使用 Jsoup (java) 进行解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45440628/