JSOUP - 如何使用 JSOUP 抓取“需要登录”页面

2023-12-13

我在抓取我想要抓取的确定的网站时遇到困难。问题是:成功登录该网站后,我无法访问需要有效登录的链接。

例如:

public Document executeLogin(String user, String password) {
    try {
        Connection.Response loginForm = Jsoup.connect(url)
                .method(Connection.Method.GET)
                .execute();

        Document mainPage = Jsoup.connect(login-validation-url)
                .data("user", user)
                .data("senha", password)
                .cookies(loginForm.cookies())
                .post();

        Document evaluationPage = Jsoup.connect(login-required-url)
                .get();

       return evaluationPage;
    } catch (IOException ioe) {
        return null;
    }

我在这里做的是:

  • 从登录页面获取cookie,以便我可以正常登录;
  • 然后我发布到登录验证网址,登录后返回主页;
  • 最后,我尝试在登录主页后访问登录所需的 url,但该请求返回登录页面,就好像会话已过期一样。

我知道我必须存储 cookie 才能保持会话处于活动状态,但是当我连接到登录验证 url 时,它会返回一个 Document 对象,并且没有可从该对象获取的 cookie。

有没有办法获取成功登录创建的“会话”并将其在其他 Jsoup.connects 中发送?我想做的是抓取一个只能由登录用户访问的页面。

预先非常感谢您。


登录后获取cookie:

    Connection.Response loginForm = Jsoup.connect(url)
            .method(Connection.Method.GET)
            .execute();

    Connection.Response mainPage = Jsoup.connect(login-validation-url)
            .data("user", user)
            .data("senha", password)
            .cookies(loginForm.cookies())
            .execute();

    Map<String, String> cookies = mainPage.cookies();

    Document evaluationPage = Jsoup.connect(login-required-url)
            .cookies(cookies)
            .execute.parse();

   return evaluationPage;

当您获取第二个网页时,您还必须使用 cookie:

(来源:我前几天遇到这个问题)

所以把饼干放在一个更容易Map:

Map<String, String> cookies = loginForm.cookies();

并使用这些 cookie 提交表单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSOUP - 如何使用 JSOUP 抓取“需要登录”页面 的相关文章

随机推荐

  • 获取 XML 文档注释

  • 如何收听N个频道? (动态选择语句)

    要开始执行两个 goroutine 的无限循环 我可以使用下面的代码 收到消息后 它将启动一个新的 goroutine 并永远持续下去 c1 make chan string c2 make chan string go DoStuff c
  • Schema.org 在一页上设置多个事件

    是否有一种正确的方法可以在 Schema org 的一个页面上显示多个事件 理想情况下 我们不希望每个事件都有一个页面 这是我们想要的示例结构 div div h2 Chili Cookoff h2 div div h3 span Manh
  • 如何将 knockout.js 与 ASP.NET MVC ViewModel 结合使用?

    Bounty 已经有一段时间了 我仍然有几个悬而未决的问题 我希望通过增加赏金也许这些问题能够得到解答 如何将 html 助手与 knockout js 一起使用 为什么需要准备好文档才能使其正常工作 有关更多信息 请参阅第一次编辑 如果我
  • 使用 prolog 解决 Caliban 问题

    我正在努力使用学校的序言来解决逻辑难题 线索如下 布朗 克拉克 琼斯和史密斯是四位为他们的人民服务的重要公民 作为建筑师 银行家 医生和律师的社区 尽管不一定 分别 布朗比琼斯更保守 但比史密斯更自由 比比他年轻的人打高尔夫球更好 并且拥有
  • 通过重叠两个数据框,为每个组/id 创建子图

    我有以下两个数据框 Load the required libraries import pandas as pd import matplotlib pyplot as plt Create dataset 1 data set 1 id
  • 使用 Python 处理 XLSX 中的图像

    我有一个 xlsx 有两张表 一张在 G1 O25 中有一些数据 我们称之为 数据 一张在 G1 O25 的单元格中插入了一些图像 我们称之为 图像 我的目标是使用 Python 通过图像过滤数据 我想要一个弹出窗口 显示单元格 G1 中的
  • 在对象中声明函数名,为什么? [复制]

    这个问题在这里已经有答案了 正在研究一些 js 代码性能并看到了这种方法 window sample foo function foo a b code goes here bar function bar a b code goes he
  • support-library-v4 的依赖问题

    我想在 Eclipse 中导入 2 个现有项目作为库 这两个库项目都依赖于support library v4并有一个 jar 文件 因此 当我导入它们时 系统会要求我修复依赖项 我收到此错误 Jar mismatch Fix your d
  • 在类似 C 的语言中,空格是否被视为标记?

    空格是否被视为 C 类语言中的一种标记 尤其对 C 感兴趣 K R 中的参考手册对此似乎有点含糊 不 空格不会被视为令牌 从http c0x coding guidelines com 6 4 html 标准文本草案 不幸的是实际标准需要花
  • Fortran语言中的多态性

    我有一个类似的代码 Module C sys use class A implicit none Private Type public C sys type private logical Ao set false type A Ao C
  • 如何从用户控件处理页面事件? (VB.net)

    我希望在用户控件生命周期的 预加载 阶段执行一些代码 但是预加载事件仅适用于 Page 对象 因此 我将以下方法添加到我的用户控件中 Private Sub Page PreLoad ByVal sender As Object ByVal
  • 角度平移即时方法不起作用

    我们有一个带有角度翻译的网站 它工作完美 我们有一个变量 我们想用某种语言键来固定它 假设网站的语言有 en 和 zh 作为选项 我希望无论语言选择如何 某个翻译都以 zh 返回 通过浏览API参考 我找到了一种名为 Instant 的方法
  • C++ 宏乘法是怎么回事

    define MAX 265 std cout lt lt 0 MAX lt lt std endl to my surprise the output is 9 rather than 0 这个 C 宏乘法有什么问题 EDIT 以下是完整
  • 使用 ElementTree 解析具有特殊字符的 XML

    我尝试使用 GET 服务进行解析ElementTree 其内容我不控制 包含非 UTF8 特殊字符 respXML response content decode utf 8 respRoot ET fromstring respXML 第
  • 用前导零填充数字列

    过去几个小时我一直在研究这个问题 我尝试过使用sprintf但它会将列更改为字符 我想要做的就是拥有一个固定宽度的数字列 并用零填充 如果您愿意使用自定义类 则可以编写一个打印方法来执行此操作 制作一个数据框 并为其指定一个自定义类 DF
  • 根据顶部图像的 Alpha/透明度混合两个 uiimage

    我正在尝试将背景与前景图像混合 其中前景图像是带有线条的透明图像 我正在尝试这样做 UIGraphicsBeginImageContext CGSizeMake 320 480 CGContextRef context UIGraphics
  • ORION:获取订阅列表

    我有兴趣访问活动订阅列表 但在阅读了所有有关 API 的 wiki 后 https forge fi ware org plugins mediawiki wiki fiware index php Publish Subscribe Br
  • 与empty、isset、!empty、!isset 混淆

    我有以下内容无法正常工作 GET category 也可以等于0 if empty GET category do something else do something else 我如何重写这个 if 语句来做 3 件不同的事情 做某事如
  • JSOUP - 如何使用 JSOUP 抓取“需要登录”页面

    我在抓取我想要抓取的确定的网站时遇到困难 问题是 成功登录该网站后 我无法访问需要有效登录的链接 例如 public Document executeLogin String user String password try Connect