javahtml
在第一个网页中有一个登录按钮,点了按钮以后网页地址不会变,但是会有不同的数据出现。
针对这种情况,怎么用jsoup实现获取点击登录按钮以后的HTML元素呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实现思路:
1、模拟登录,获取登录后的cookie.
2、带着得到的cookie请求需要的操作。
Jsoup例子,比较简单:
package com.daidai.util;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jsoup.Connection.Method;
import org.jsoup.Connection.Response;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupUtil {
// 登录获取到的cookie
static Map<String, String> cookieMap = new HashMap<String, String>();
/**
* @param uri
* @param paramsMap form表单中的参数和值
* @return
*/
public static boolean login(String uri, Map<String, String> paramsMap){
boolean loginFlag = false;
Response response = null;
try {
response = Jsoup.connect(uri)
.userAgent("Mozilla")
.data(paramsMap)
.method(Method.POST)
.timeout(20000)
.execute();
if (response.statusCode() == 200) {
cookieMap = response.cookies();
loginFlag = true;
}
} catch (IOException e) {
e.printStackTrace();
}
return loginFlag;
}
/**
* 提交评论内容
* @param url
* @param params 封装的参数
*/
public static void doPost(String uri, Map<String,String> paramsMap){
Response response = null;
try {
response = Jsoup.connect(uri)
.userAgent("Mozilla/5.0")
.data(paramsMap)
.method(Method.POST)
.timeout(20000)
.cookies(cookieMap)
.ignoreContentType(true)
.execute();
if (response.statusCode() == 200) {
System.out.println("评论成功!");
} else{
System.out.println("评论失败!(HTTP CODE:"+response.statusCode()+")");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}