jsoup

  • jsoup解释,见百度百科。
  • jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
Document doc = Jsoup.parse(html);
// 从URL直接加载HTML 文档
Document doc =Jsoup.connect("网址/").get();
String title = doc.title();
Document doc =Jsoup.connect("网址/")
.data("query", "Java") //请求参数
.userAgent("Mozilla") //设置User-Agent
.cookie("auth", "token") //设置cookie
.timeout(3000) //设置连接超时时间
.post(); //使用POST方法访问URL
//get方法无参数请求
Document document = Jsoup.connect(url).get();
//返回网页的html的源代码
// 从文件中加载HTML 文档
File input = new File("D:/test.html");
Document doc = Jsoup.parse(input,"UTF-8","网址/");
  • 使用Jsoup获取数据
//select
String documents2 = document.select(匹配内容的所在标签).text();
//返回标签中的内容

//寻找元素
Elements id = document.getElementById(String id);  //获取id标签
Elements tag = document.getElementByTag(String Tag);  //获取指定标签
Elements className = document.getElementByClass(String className);  //获取类的标签
Elements key = document.getElementByAttribute(String key);  //获取指定属性的标签

String attr = document.attr(String  attributeKey);
//前面是属性,返回指定属性的值


  • 当你想获得标签内的标签的时候
Elements links = content.getElementsByTag("a");
for (Element link : links) {
  String linkHref = link.attr("href");
  String linkText = link.text();
}
  •  使用css或者jquery来查找或者操作元素
Document doc = Jsoup.connect(url).get();
String str = doc.select(String selector).text();  //获取数据

//选择器
Elements tag = doc.select(String tagname); //按标签查找元素
Elements id = doc.select("#id");  //安id查找元素
Elements class = doc.select(".class");  //按类名查找元素
Elements attr = doc.select("attribute");  //具有属性的元素
Elements attr2 = doc.select("^attr-");  //具有属性名称前缀的元素
Elements attrValue = doc.select("[width=50]");  //具有属性值的元素
Elements idAttr = doc.select("div#logo");  //具有logo的id的div标签
Elements classAttr = doc.select("div.logo");  //具有logo的class的div标签
Elements tagAttr = doc.select("a[href]");  //具有属性的元素

Elements link = dob.select("a").first();  //选择第一个a标签

 

内容来自https://jsoup.org/cookbook/extracting-data/dom-navigation 

  • jsoup解析html中的script中的内容

例子:

String url = "http://news.cbg.cn/cqxwlb/2018/1101/10924283.shtml";
Document document = Jsoup.connect(url).get();
Element script = document.select("div.main > script").get(0);
String[] data = script.data().toString().split(";");
for(String var : data){
    /*过滤variable为空的数据*/
	if(StringUtils.isBlank(variable)){
        //获取满足条件的内容
        if(variable.contains("var vurl") || variable.contains("play.url")){
            String[] kvp = variable.split("=");
            //存储到map中
            if(!map.contiansKey(kvp[0].trim())){
                map.put(kvp[0].trim(), kvp[1].trim().substring(1, kvp[1].trim().length()-1).toString())
                
            }
        }
    }
}
  • jsoup获取子标签
//获取a标签下的span标签
Elements a = document.select("a");
for(Element span : a){
    String x = span.select("span")
}

 

你可能感兴趣的:(java)