gpt4 book ai didi

java - 如何使用 Jsoup 管理 cookie?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:41:41 29 4
gpt4 key购买 nike

Jsoup 中是否有一个简单的 cookie 管理器可以按主机存储 cookie? this thread 中的示例比较欠缺。

最佳答案

我没有找到适用于 Jsoup 的标准解决方案。这是我使用 HashMap 进行的简单 cookie 处理。它可能缺少一些功能,但我希望它对我的基本爬虫来说足够好:

private static HashMap<String, HashMap<String, String>> host2cookies = new HashMap<String, HashMap<String, String>>();

public static String[] DownloadPage(URL url) throws Exception
{
Connection con = Jsoup.connect(url.toString()).timeout(600000);
loadCookiesByHost(url, con);


Document doc = con.get();
url = con.request().url();

storeCookiesByHost(url, con);

return new String[]{url.toString(), doc.html()};
}

private static void loadCookiesByHost(URL url, Connection con) {
try {
String host = url.getHost();
if (host2cookies.containsKey(host)) {
HashMap<String, String> cookies = host2cookies.get(host);
for (Entry<String, String> cookie : cookies.entrySet()) {
con.cookie(cookie.getKey(), cookie.getValue());
}
}
} catch (Throwable t) {
// MTMT move to log
System.err.println(t.toString()+":: Error loading cookies to: " + url);
}
}

private static void storeCookiesByHost(URL url, Connection con) {
try {
String host = url.getHost();
HashMap<String, String> cookies = host2cookies.get(host);
if (cookies == null) {
cookies = new HashMap<String, String>();
host2cookies.put(host, cookies);
}
cookies.putAll(con.response().cookies());
} catch (Throwable t) {
// MTMT move to log
System.err.println(t.toString()+":: Error saving cookies from: " + url);
}
}

关于java - 如何使用 Jsoup 管理 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9069288/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com