使用Jsoup登录和抓取数据

我想使用Jsoup来抓取只有在我登录时才可用的页面。我想这意味着我需要在一个页面上登录并将cookie发送到另一个页面。
我在这里阅读了一些早期的post并编写了以下代码:

 public static void main(String[] args) throws IOException { Connection.Response res = Jsoup.connect("login.yahoo.com") .data("login", "myusername", "passwd", "mypassword") .method(Method.POST) .execute(); Document doc=res.parse(); String sessionId = res.cookie("SESSIONID"); Document doc2 = Jsoup.connect("http://health.groups.yahoo.com/group/asthma/messages") .cookie("SESSIONID", sessionId) .get(); Elements Eles=doc2.getElementsByClass("message"); String content=Eles.first().text(); System.out.println(content); 

我的问题是我如何知道我的cookie名称(即“SESSIONID”)在这里发送我的登录信息? 我使用.cookies()方法从登录页面获取所有cookie:


DK
YM
Ť
PH
ÿ
F

我一个接一个地尝试过,但都没有用。 我可以从其中一些获得sessionId,但是我无法从第二页成功获取节点,这意味着我没有成功登录。有人能给我一些建议吗? 非常感谢!

我也在努力登录jsoup的网站。

我想出的是selenium webdriver和jsoup的混合体。

Webdriver可以远程控制浏览器,通常用于测试目的。

对于我的应用程序,不希望浏览器可见,并在屏幕上搞乱。 所以我使用了“静音”webdriver:HtmlUnitDriver。 您可以使用以下代码行进行实例化:

 HtmlUnitDriver driver = new HtmlUnitDriver(true); // true meaning javascript support (Using rhino i be leave) 

现在登录我使用的网站:

 String baseUrl = "http://www.thesite.com"; driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.get(baseUrl); driver.findElement(By.id("TextBoxUser")).clear(); driver.findElement(By.id("TextBoxUser")).sendKeys("username"); driver.findElement(By.id("TextBoxPass")).clear(); driver.findElement(By.id("TextBoxPass")).sendKeys("password"); driver.findElement(By.id("Button1")).click(); 

获取页面内容:

 String htmlContent = driver.getPageSource(); 

开始使用jsoup:

 Document document = Jsoup.parse(htmlContent); 

这对我来说很有用。

Steffn Otto Jensen

你有没有试过这样的事情:

 Connection.Response res = Jsoup.connect("https://login.yahoo.com/config/login?") .data("login", "myusername", "passwd", "mypassword") .method(Method.POST) .execute(); Map cookies = res.cookies(); Connection connection = Jsoup.connect("http://health.groups.yahoo.com/group/asthma/messages"); for (Map.Entry cookie : cookies.entrySet()) { connection.cookie(cookie.getKey(), cookie.getValue()); } Document doc= connection.get(); // #code selector // Example // Element e=doc.select(".ygrp-grdescr").first(); // System.out.println(e.text()); // Print => This list will be for asthmatics, and anyone whose life is affected by it. Discussions include causes, problems, and treatment 

我希望你这适用于你的问题。