当前位置: 首页 > 面试题库 >

JSOUP-如何使用JSOUP搜寻“需要登录”页面

葛奇
2023-03-14
问题内容

我在爬网一个想要爬网的坚定网站时遇到了麻烦。问题是:成功登录该网站后,我无法访问需要有效登录的链接。

例如:

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,该URL在登录后返回主页。
  • 最终,我尝试在登录主页后尝试访问需要登录的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:

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

因此,将cookie放入会更容易Map

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

并使用这些cookie提交表单



 类似资料:
  • 问题内容: 如何通过jsoup登录? 我试过了,但是不起作用: 问题答案: 通常,登录网站需要两个步骤- 您发送请求以获取页面,然后从中提取一些值,例如会话ID等以及cookie。 您发送带有第1步中的值以及您的用户名和密码的请求。 要知道您需要发送哪些值,请在开发人员模式下使用浏览器(按F12键)并检查流量。更改字符串以匹配您的浏览器,因为某些站点将不同的页面发送到不同的客户端。

  • 问题内容: 在此网站上,您可以输入您的学生卡号,然后显示该卡上还剩多少钱。我想使用JSOUP获得信息。这是我当前的代码,但是不起作用, 我没有太多经验,所以我不知道在哪里寻找问题。一些想法: 我应该使用还是? 在使用chrome devoloper工具时,发布数据是我使用功能发送的所有数据。但是,如果发送时出现错误,为什么? 我应该发送解密或加密的数据吗?(两者均在chrome devoloper

  • 我试图登录使用领英J汤,我已经尝试了几种方法,但总是遇到错误403,我哪里出错了? 测试一 错误控制台 组织。jsoup。HttpStatusException:获取URL时发生HTTP错误。状态=403,URL=https://www.linkedin.com在org。jsoup。帮手HttpConnection$响应。在org上执行(HttpConnection.java:590)。jsoup

  • 阅读了一些例子后,我想实现一个爬虫的帮助转移与登录,如: https://target.helpshift.com/login/?next=/admin/issues/ 但是,我得到这个错误: 线程“main”组织中出现异常。jsoup。HttpStatusException:获取URL时发生HTTP错误。状态=403,URL=https://target.helpshift.com/login/

  • 问题内容: 使用Jsoup登录网站需要什么?我相信我的代码是正确的,但是我从未使用Jsoup成功登录到网站,因此我可能会丢失一些东西。这是我的代码: 返回一个显示未成功登录的登录页面。有一个名为的输入值,我认为这可能是为什么它不起作用的原因。这个值会随着时间的推移而上升。我运行了两次代码,时间变量返回了和。我的代码需要大约10秒钟的时间来打印文档,因此,变量在发送发布请求时是否已经更改?我不确定这

  • 问题内容: 我正在尝试登录此网站:http : //deeproute.com 这是我的代码。 不幸的是,这只是以未登录状态返回同一页面。我究竟做错了什么? 问题答案: 您需要在发布前阅读表格!您缺少param subbera =登录。