按照国际惯例,我首先应该介绍下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. 学习 AppFuse

    1.Appfuse是个什么鬼? AppFuse是一个集成了当前最流行的Web应用框架的一个更高层次的Web开发框架.换句话说,AppFuse就是一个完整的各主流框架的整合版本.AppFuse总是能够紧 ...

  2. ORA-14452的出现原因解析及解决方法

    在删除临时表时遇到了ORA-14452错误:ORA-14452: attempt to create , alert or drop an index on temporary table alrea ...

  3. SQLServer中修改字段为空

    ALTER 表名 table1 ALTER COLUMN [字段] 类型 NULL; 例如: ) COLLATE Chinese_PRC_CI_AS NULL;

  4. Solr嵌套子文档的弊端以及一种替代方式

    背景:在考察了多种工具后,我们决定使用solr来作为多标签用户管理体系的查询方案. 原计划:电话,call客,跟进等等记录上报到kafka,然后通过flume+morphline录入到solr中.每一 ...

  5. Ubuntu 系统 update-rc.d 命令

    Ubuntu或者Debian系统中update-rc.d命令,是用来更新系统启动项的脚本.这些脚本的链接位于/etc/rcN.d/目录,对应脚本位于/etc/init.d/目录.在了解update-r ...

  6. Ubuntu Mysql 维护

    安装MySql sudo apt-get install mysql-server 进入Mysql Shell mysql -u root -p 查询数据库 SHOW DATABASES; 创建数据库 ...

  7. [HTML表格]在databases显示行的附加信息

    模板代码: <!-- DataTables CSS --> <link rel="stylesheet" href="{% static 'DataTa ...

  8. STM32电机控制器小心得

    首先声明的是本人刚刚大学毕业进入电机控制这个行业,以前在学校也做过类似51的实验,然而在工作中发现那些东西是皮毛的不能再皮毛,我现在在公司也算是一个实习生,主要工作是改各厂家对控制器的功能需求,(其实 ...

  9. 深入理解Java反射

    要想理解反射的原理,首先要了解什么是类型信息.Java让我们在运行时识别对象和类的信息,主要有2种方式:一种是传统的RTTI,它假定我们在编译时已经知道了所有的类型信息:另一种是反射机制,它允许我们在 ...

  10. HTML中的div,section,article的区别

    刚开始看到标签的就有些疑惑,觉得为什么有那么多相同用途的标签,多方查询资料细细比较之后才发现原来各有千秋,结合自己的想法总结如下: div在HTML早期版本就支持了,section和article是H ...