按照国际惯例,我首先应该介绍下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,写的有点简单,希望理解,啊哈~

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

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

  1. 【Jsoup网页解析】

    下载链接:http://jsoup.org/download 一.普通的请求方式(不带有cookie) 使用举例: 第一步: Connection conn=Jsoup.connect(url); 第 ...

  2. 爬取微博的数据时别人用的是FM.view方法传递html标签那么jsoup怎么解析呢

    使用JSOUP就行 这里给出点思路 我只做了自己的首页和其他人的微博首页的抓取 其他的抓取没尝试(不好意思 比较懒...) 首先是利用JSOUP进行登陆 获取页面 看了下微博的登陆表格 发现用了aja ...

  3. HttpClient+jsoup登录+解析 163邮箱

    找了几个,只有这个靠谱,用的是httpclient4,另外还需要commons-lang和jsoup包 http://jsoup.org/ http://www.oschina.net/code/sn ...

  4. 【网络爬虫】【java】微博爬虫(四):数据处理——jsoup工具解析html、dom4j读写xml

    之前提到过,对于简单的网页结构解析,可以直接通过观察法.手工写正则解析,可以做出来,比如网易微博.但是对于结构稍微复杂点的,比如新浪微博,如果还用正则,用眼睛一个个去找,未免太麻烦了. 本文介绍两个工 ...

  5. 使用Jsoup帮助解析具有html标签的数据和解析网页

    下载Jsoup包后导入 /** * Created by YGW on 2016/4/17. * 显示公告的详细内容 */public class PressFragment extends Frag ...

  6. Jsoup库 解析DOM文档

    DOM文档包括 HTML, XML等等 下载: http://jsoup.org/download Jsoup 获取数据的方式 //html 文本, url, 本地html String html = ...

  7. Jsoup API解析HTML中input标签

    Jsoup官网地址:http://jsoup.org/ 1. 解析单个input元素     String html = "<p><input align=\"t ...

  8. Jsoup后台解析html、jsp网页

    在一些网络爬虫或者从第三方网站抓取信息的程序都面临1个问题,如何从网页中把所需的信息提取出来,Jsoup是个比较好的选择,它能把网站内容解析成Document,再从document中取element就 ...

  9. Jsoup爬虫解析

    需要下载jsoup-1.8.1.jar包 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQue ...

随机推荐

  1. iOS开发之第三方库的学习--hpple的使用

    前言:因为在开发中很可能会遇到html解析,如果后台提供的数据只有html数据,或者开发的app需要从web前端的html里获取数据,就需要html解析工具了. 关于HTML解析库,可以阅读:收集几个 ...

  2. [转]CTO、技术总监、首席架构师的区别

    经常有创业公司老板来拜访我,常常会拜托给我一句话:帮我找一个CTO. 我解释的多了,所以想把这个写下来,看看你到底需要的应该是啥. 一.高级程序员 如果你是一个刚刚创业的公司,公司没有专职产品经理和项 ...

  3. fdisk添加分区引起的Linux Error: 22: Invalid argument

    在Linux服务器(虚拟机)上使用fdisk添加分区.格式化分区后,遇到了Linux Error: 22: Invalid argument错误,操作步骤如下所示 [root@oracle-serve ...

  4. sql 日期格式汇总

    SQLserver中用convert函数转换日期格式2008-01-15 15:51SQLserver中用convert函数转换日期格式 SQL Server中文版的默认的日期字段datetime格式 ...

  5. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  6. $.parseJson 在 firefox 下返回 null 的问题

    最近调查一个浏览器兼容性问题,在 IE, chrome下都运行正常,但是在 firefox 下运行时: $.parseJson(xxx) 返回 null,所以导致了 无法正常运行,调查的结果是因为 返 ...

  7. Blog List

    Blog List Spark Spark官方文档 - 中文翻译 Spark快速入门 - Spark 1.6.0 Spark SQL 官方文档-中文翻译 Spark SQL 之 Migration G ...

  8. Linux下通配符总结

    * - 通配符,代表任意字符(0到多个)? - 通配符,代表一个字符# - 注释/ - 跳转符号,将特殊字符或通配符还原成一般符号| - 分隔两个管线命令的界定; - 连续性命令的界定~ - 用户的根 ...

  9. 用alarmmanager 多次发送PendingIntent

    遇到如下问题 service中得一随机数 用alarmmanager 发送PendingIntent的时候,receiver收到的随机数不变. pendingintent传值经常获取到的值是第一次的值 ...

  10. 尽量不要用ad,adv···,advertisement 这些关键词命名

    html dom,文件夹名称,文件名称·······,都尽量不用ad,adv···,advertisement  这些关键词! 为嘛呢? 因为会被浏览器的广告插件自动给屏蔽掉. 我的网站中有一个广告管 ...