我正在尝试使用jsoup登录到一个网站,然后抓取信息,我遇到了一个问题,我可以成功登录并从index.php创建文档,但我无法获得网站上的其他页面。我知道我需要在我发布后设置一个cookie,然后当我试图在网站上打开另一个页面时加载它。但是我该怎么做呢?下面的代码让我登录并获取index.php
Document doc = Jsoup.connect("http://www.example.com/login.php")
.data("username", "myUsername",
"password", "myPassword")
.post();我知道我可以使用apache httpclient来做这件事,但我不想这样做。
发布于 2011-06-25 17:16:19
当您登录到该站点时,它可能正在设置一个授权的会话cookie,需要在后续请求中发送该cookie以维护会话。
您可以像这样获取cookie:
Connection.Response res = Jsoup.connect("http://www.example.com/login.php")
.data("username", "myUsername", "password", "myPassword")
.method(Method.POST)
.execute();
Document doc = res.parse();
String sessionId = res.cookie("SESSIONID"); // you will need to check what the right cookie name is然后在下一个请求中发送它,如下所示:
Document doc2 = Jsoup.connect("http://www.example.com/otherPage")
.cookie("SESSIONID", sessionId)
.get();发布于 2012-05-10 19:53:22
//This will get you the response.
Response res = Jsoup
.connect("loginPageUrl")
.data("loginField", "login@login.com", "passField", "pass1234")
.method(Method.POST)
.execute();
//This will get you cookies
Map<String, String> loginCookies = res.cookies();
//And this is the easiest way I've found to remain in session
Document doc = Jsoup.connect("urlYouNeedToBeLoggedInToAccess")
.cookies(loginCookies)
.get();发布于 2012-12-29 09:14:32
其中的代码是:
Document doc = Jsoup.connect("urlYouNeedToBeLoggedInToAccess").cookies().get(); 我一直有困难,直到我把它改为:
Document doc = Jsoup.connect("urlYouNeedToBeLoggedInToAccess").cookies(cookies).get();现在,它工作得无懈可击。
https://stackoverflow.com/questions/6432970
复制相似问题