初识Jsoup之解析HTML

按照国际惯例,我首先应该介绍下Jsoup是个什么东西,然后在介绍下具体用法,然后在来个demo演示,其实我也是这么想的,小编今天花了一天的时间从学习—>解析页面,总算是成果圆满了吧,啊哈,但是,一个不会总结的程序猿不是一个帅气的程序猿,啊哈,这就意味着我是个帅气的猿猿

----------------------------------------------------------------------------------------------------------------------

一、什么是Jsoup?

官网网站:http://jsoup.org/

可在官网下载对应的jar

通俗的将Jsoup就是一个解析网页的东西,然后我们在看下官方的解释:

官方解释就是高大上~

二、Jsoup的基本用法(http://www.open-open.com/jsoup/parsing-a-document.htm

网站写的很详细,我想聪明的大家看看开发文档一看就懂…恩,有道理,正所谓帅的人都能看懂..

三、demo演示  解析的url:http://sex.guokr.com/

写在前面:忽略链接内容,小编就是找到一个不错的网站~,啊哈,别想歪了

1.解析一个ul –>li

我们来看下这段的源代码:

由此我们知道了大体的样子,现在我们来写编码

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;

/**
 * 使用Jsoup解析url
 * @tag:url :http://sex.guokr.com/
 * Created by monster on 2015/12/11.
 */
public class JsoupZX {
    public static void main(String[] args){
        final String url="http://sex.guokr.com/" ;

        try {

            Document doc = Jsoup.connect(url).get();

           Elements container = doc.getElementsByClass("container");

            Document containerDoc = Jsoup.parse(container.toString());

            Elements module = containerDoc.getElementsByClass("module-list");

            Document moduleDoc = Jsoup.parse(module.toString());

            //Elements clearfix = moduleDoc.getElementsByClass("clearfix");  //DOM的形式

            Elements clearfix = moduleDoc.select(".clearfix");  //选择器的形式

            for (Element clearfixli : clearfix){
                Document clearfixliDoc = Jsoup.parse(clearfixli.toString());
                Elements kind = clearfixliDoc.select(".board-tag");  //选择器的形式
                Elements title = clearfixliDoc.select(".tit-post");
                Elements author = clearfixliDoc.select("span a");

               System.out.println("类别"+kind.text());  //分类
               System.out.println("标题"+title.text());  //标题
               System.out.println("作者"+author.text());  //作者
                System.out.println("详情链接"+title.attr("href"));  //标题下的链接

                System.out.println("=====================");

            }
              //  String title = clearfixli.getElementsByTag("a").text();

          //  System.out.println(clearfix);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

结果:

=================================================================================================

2.解析详情页面和评论

链接:http://sex.guokr.com/post/1100992/

上述就是页面的内容

然后我们看下源码:

内容:

评论:

看完源码后,我们进行编码:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;

/**
 * 使用Jsoup解析帖子详情和评论
 * @tag: url:http://sex.guokr.com/post/1100992/
 * Created by monster on 2015/12/11.
 */
public class JSoupDetail {

    public static void main(String args[]){
        final String url=  "http://sex.guokr.com/post/1100992/";

        try {

            Document doc = Jsoup.connect(url).get();

            Elements container = doc.getElementsByClass("container");

            Document containerDoc = Jsoup.parse(container.toString());

            String articleTitle =  containerDoc.getElementById("articleTitle").text();
            String authorName = containerDoc.getElementById("authorName").text();
            String time = containerDoc.select("span").first().text();
            String imgphotoUrl=containerDoc.select("img").get(1).attr("src");
            System.out.println("标题:" + articleTitle); //标题
            System.out.println("作者:"+authorName); //作者
            System.out.println("发布时间:"+time); //发布时间
            System.out.println("作者头像的url:"+imgphotoUrl); //发布时间

            Element articleContent =  containerDoc.getElementById("articleContent");
            Document articleContentDoc = Jsoup.parse(articleContent.toString());

           int size=  articleContentDoc.select("p").size();
            System.out.println("段落数:"+size);

            System.out.println("帖子内容:");

            for (int i=0;i<size;i++){
               String content =  articleContentDoc.select("p").get(i).text();
                System.out.println(content);
            }

            System.out.println("================================================");
        System.out.println("帖子评论区域(按照楼层分布)");

            Elements cmts =containerDoc.getElementsByClass("cmts");
            Document cmtsDoc = Jsoup.parse(cmts.toString());
            System.out.println("评论楼层:"+cmtsDoc.select("span").first().text());

            Elements cmtslist =cmtsDoc.getElementsByClass("cmts-list");

            for (Element clearfix:cmtslist){
                String user =  clearfix.select("a").get(1).text();
                String userPhotoUrl =clearfix.select("img").get(0).attr("src");
                String replyTime = clearfix.select("a").get(3).text();
               String floor=clearfix.select("span").text();

                System.out.println("评论者:"+user+"\n"+"评论者头像url:"+userPhotoUrl+"\n"+"回复时间:"+replyTime+"\n"+"所在楼层:"+floor);
                Document replyContentDoc = Jsoup.parse(clearfix.toString());
               Elements replyContent =  replyContentDoc.getElementsByClass("cmt-content");
                System.out.println("评论内容:");
                int s =replyContent.select("p").size();
               for (int j=0;j<s;j++){
                 String replycontent =   replyContent.select("p").get(j).text();
                   System.out.println(replycontent);

               }
                System.out.println("================================================");
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

输出结果:

--------->

以上就是小编的demo,写的有点简单,希望理解,啊哈~

另外:欢迎关注小编的博客,么么哒

时间: 2024-10-22 06:50:41

初识Jsoup之解析HTML的相关文章

Jsoup入门-解析和遍历一个html文档

解析和遍历一个HTML文档 如何解析一个HTML文档: String html = "<html><head><title>First parse</title></head>" + "<body><p>Parsed HTML into a doc.</p></body></html>"; Document doc = Jsoup.parse(ht

Jsoup登录解析网页信息

今天解析网页的时候,遇到必须登录后才能够访问的问题,在网上搜索了一些资料,反正有人做出来了,不过是使用HttpClient+Jsoup来实现的,我不清楚他们使用什么版本的Jsoup,地址:  HttpClient模拟登陆人人网,并且爬取日志内容(一),http://bbs.csdn.net/topics/390269063,查看现在的Jsoup API,可以直接模拟登陆,获取服务器返回的信息. 我这里是使用水木社区做Demo,其中下面的id和passwd分别是提交form表单中用户名和密码的

HttpClient+jsoup登录+解析 163邮箱

找了几个,只有这个靠谱,用的是httpclient4,另外还需要commons-lang和jsoup包 http://jsoup.org/ http://www.oschina.net/code/snippet_128625_12592?p=2 ------------------------------------------------------------ 如题: 支用用jsoup解析页面非常方便,当时jsoup做登录就比较麻烦,反正我不知道怎么做. HttpClient做登录比较方便因

android中使用JSOUP如何解析网页数据详述

最近使用了Jsoup,感觉还是挺简单,挺方便的,轻而易举地抓取网页源码,分析获取各个标签所需的东西. 这几天在搞一个音乐播放器的小项目,其中使用到了就是使用JSOUP进行页面数据的获取,获取网页的歌曲列表,并对歌曲的链接进行加载,以便实现歌曲下载和歌词的下载.搞好之后,就会跟着写几篇博文,分享给大家.本博文主要说明android中使用jsoup如何进行网页数据的获取. 具体可看下面各个相关例子: Jsoup下载地址: http://jsoup.org/download jsoup开发指南,jso

使用Jsoup库解析HTML、XML或URL链接中的DOM节点

soup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据. Jsoup的使用例子 <span style="font-size:14px;">import java.io.IOException; import java.io.InputStream; import org.jsoup.Jsoup; import org.jsoup.nodes.

【Jsoup网页解析】

下载链接:http://jsoup.org/download 一.普通的请求方式(不带有cookie) 使用举例: 第一步: Connection conn=Jsoup.connect(url); 第二步: Document document=conn.get(); 第三步: Elements eles=document.getElementsByTag("TagName"): 第四步:通过Element遍历Elements 1.根据属性名获取属性值的方法 String attr(St

AndroidHttpClient &amp; jsoup 解析 正方教务系统

这段时间学习了一下使用jsoup来解析网页,也是看了下学校的正方教务系统,因为这个正方教务系统的各种不爽,不知道为什么还是那么多学校用这个系统呢?每到选课什么的就死啦死啦的,从它的网页上各种命名来看,简直就和我们这些小菜鸟一样o(╯□╰)o 使用AndroidHttpClient 而不是使用HttpClient,怎么说AndroidHttpClient也是SDK中自带的,基于HttpConnection,所以来说性能上来说应该比较好吧. 因为不熟悉使用这个强大的工具导致走了很多弯路,浪费了很多时

Jsoup库使用完全解析

之前写过一篇文章android 项目实战--打造超级课程表一键提取课表功能,里面用到了这个库,但是在那篇文章里,jsoup的使用几乎是没有讲到,因此,此篇文章补上. jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据 开始讲一大堆语法,如果你不敢兴趣,大可跳过这部分,直接看代码实战部分. Jsoup可以解析和遍历一个文档,一个文档的对象模型是由以下几部分组成.

Jsoup解析页面

package com.tl.spider.parser.impl; import com.tl.spider.download.WebPageDownLoadUtil; import com.tl.spider.parser.interfaces.ParseFieldsInterface; import com.tl.spider.pojos.ParserResultEntity; import org.jsoup.Jsoup; import org.jsoup.nodes.Document;