Ver*_*iao 3 java cookies jsoup
我想用来Jsoup抓取一个仅在我登录时才可用的页面.我想这意味着我需要在一个页面上登录并将cookie发送到另一个页面.
我在这里阅读了一些早期的帖子并编写了以下代码:
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);
Run Code Online (Sandbox Code Playgroud)
我的问题是如何知道我的cookie名称(即"SESSIONID")在这里发送我的登录信息?我使用该.cookies()方法从登录页面获取所有cookie:
B
DK
YM
T
PH
Y
F.
我一个接一个地尝试过,但都没有用.我可以从其中一些获得sessionId,但是我无法从第二页成功获取节点,这意味着我没有成功登录.有人能给我一些建议吗?非常感谢!
小智 7
我也在努力登录jsoup网站.
我想出的是selenium webdriver和jsoup的混合体.
Webdriver可以远程控制浏览器,通常用于测试目的.
对于我的应用程序,不希望浏览器可见,并在屏幕上搞乱.所以我使用了"无声"webdriver:HtmlUnitDriver.您可以使用以下代码行来实例化它:
HtmlUnitDriver driver = new HtmlUnitDriver(true); // true meaning javascript support (Using rhino i be leave)
Run Code Online (Sandbox Code Playgroud)
现在登录我使用的网站:
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();
Run Code Online (Sandbox Code Playgroud)
获取页面内容:
String htmlContent = driver.getPageSource();
Run Code Online (Sandbox Code Playgroud)
开始使用jsoup:
Document document = Jsoup.parse(htmlContent);
Run Code Online (Sandbox Code Playgroud)
这对我来说很有用.
Steffn Otto Jensen
| 归档时间: |
|
| 查看次数: |
8977 次 |
| 最近记录: |