You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Jsoup先登录网站,再解析需登录访问的页面数据?

可以用Jsoup实现先登录再解析数据

当然可以,核心是利用Jsoup的Connection对象处理会话Cookie——登录成功后网站会返回标识已登录状态的Cookie,后续请求带上这个Cookie就能访问需要权限的页面。以下是具体实现步骤和代码示例:

步骤说明

  1. 获取登录表单参数:先访问登录页面,提取隐藏字段(比如CSRF令牌,多数网站用它防范跨站请求伪造),同时确认用户名、密码对应的表单字段名。
  2. 发送登录POST请求:构造包含账号信息、CSRF令牌等参数的POST请求,登录成功后保存会话Cookie。
  3. 携带Cookie访问目标页面:用保存的Cookie发起对基金页面的请求,之后正常解析数据即可。

代码示例

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
import java.util.Map;

public class VROLoginScraper {
    public static void main(String[] args) {
        String loginUrl = "https://www.valueresearchonline.com/login";
        String targetUrl = "https://www.valueresearchonline.com/funds/portfoliovr.asp?schemecode=26123";
        
        // 替换成你的账号信息
        String username = "your_username";
        String password = "your_password";
        
        try {
            // 第一步:访问登录页面,获取CSRF令牌和初始Cookie
            Connection.Response loginPageResp = Jsoup.connect(loginUrl)
                    .method(Connection.Method.GET)
                    .execute();
            Document loginDoc = loginPageResp.parse();
            
            // 提取CSRF令牌(需根据页面实际字段名调整,比如可能是csrfmiddlewaretoken)
            String csrfToken = loginDoc.select("input[name=csrfmiddlewaretoken]").val();
            
            // 第二步:发送登录请求
            Connection.Response loginResp = Jsoup.connect(loginUrl)
                    .cookies(loginPageResp.cookies())
                    .data("csrfmiddlewaretoken", csrfToken)
                    .data("username", username)
                    .data("password", password)
                    .data("submit", "Login") // 表单提交按钮字段名,按实际页面调整
                    .method(Connection.Method.POST)
                    .execute();
            
            // 保存登录后的会话Cookie
            Map<String, String> sessionCookies = loginResp.cookies();
            
            // 第三步:携带Cookie访问目标页面
            Document targetDoc = Jsoup.connect(targetUrl)
                    .cookies(sessionCookies)
                    .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")
                    .get();
            
            // 这里可正常解析页面数据,示例:打印页面标题
            System.out.println("目标页面标题:" + targetDoc.title());
            // 根据页面结构编写选择器提取数据,比如持仓信息
            // targetDoc.select("your-target-selector").forEach(e -> System.out.println(e.text()));
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

注意事项

  • 表单参数要精准:打开登录页面的开发者工具(F12),查看表单提交的实际参数,确保代码中的字段名和页面一致(比如密码字段可能叫passwd而非password)。
  • 密码加密处理:如果网站对密码做了前端加密(比如MD5、SHA256),需要先模拟加密逻辑,再提交加密后的字符串。
  • 反爬规避:不要频繁请求,避免IP被封;可添加userAgent模拟浏览器请求,必要时添加请求头中的Referer字段。
  • 合规性:确保爬虫行为符合网站《使用条款》,不要爬取敏感数据或批量高频请求。

内容的提问来源于stack exchange,提问作者vikramvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 20:39:28