java - jsoup 发布和 cookie

标签 java screen-scraping jsoup

我正在尝试使用 jsoup 登录一个站点然后抓取信息,我遇到了一个问题,我可以成功登录并从 index.php 创建一个文档,但我无法获取站点上的其他页面。我知道我需要在发布后设置一个 cookie,然后在我试图打开网站上的另一个页面时加载它。但是我该怎么做呢?以下代码让我登录并获取 index.php

Document doc = Jsoup.connect("http://www.example.com/login.php")
               .data("username", "myUsername", 
                     "password", "myPassword")
               .post();

我知道我可以使用 apache httpclient 来执行此操作,但我不想这样做。

最佳答案

当您登录该站点时,它可能正在设置一个授权 session cookie,需要在后续请求中发送该 cookie 以维护 session 。

你可以这样获取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();

关于java - jsoup 发布和 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6432970/

相关文章:

java - 从 HTML 中的第三个表获取数据

java - RxJava onErrorResumeNext 调度器

java设置表格中特定单元格的颜色

java - 禁用 PDF.js 中的“打印到文件”选项

javascript - 使用selenium通过window.open下载文件

ruby - 从网页读取链接的 href 时, Mechanize 将 `~` 替换为 `‾`

java - 在 Jsoup 中,如何通过属性而不是数据来解析 CSS 查询?

java - 如何从类内部引用非最终变量 "out"?

php - 从网站解析比分

java - 使用Jsoup查找元素麻烦