Jsoup简介

jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。官网:https://jsoup.org/

主要功能

从一个URL,文件或字符串中解析HTML

使用DOM或CSS选择器来查找、取出数据使用DOM或CSS选择器来查找、取出数据

可操作HTML元素、属性、文本可操作HTML元素、属性、文本

注意:jsoup是基于MIT协议发布的,可放心使用于商业项目。

Maven依赖关系

org.jsoup

jsoup

1.11.3

jsoup api

6个包提供用于开发jsoup应用程序的类和接口。

org.jsoup

org.jsoup.examples

org.jsoup.helper

org.jsoup.nodes

org.jsoup.parser

org.jsoup.safety

org.jsoup.salect

主要类:

Jsoup 类提供了连接,清理和解析HTML文档的方法

Document 获取HTML文档

Element 获取、操作HTML节点

简单学习

三种加载HTML的方法

@Test

public void test1() throws IOException {

//从URL加载HTML

Document document = Jsoup.connect("http://www.baidu.com").get();

String title = document.title();

//获取html中的标题

System.out.println("title :"+title);

//从字符串加载HTML

String html = "

First parse"

+ "

Parsed HTML into a doc.

";

Document doc = Jsoup.parse(html);

title = doc.title();

System.out.println("title :"+title);

//从文件加载HTML

doc = Jsoup.parse(new File("F:\\jsoup\\html\\index.html"),"utf-8");

title = doc.title();

System.out.println("title :"+title);

}

获取html中的head,body,url等信息

@Test

public void test2() throws IOException {

Document document = Jsoup.connect("http://www.baidu.com").get();

String title = document.title();

System.out.println("title :"+title);

//获取html中的head

System.out.println(document.head());

//获取html中的body

//System.out.println(document.body());

//获取HTML页面中的所有链接

Elements links = document.select("a[href]");

for (Element link : links){

System.out.println("link : "+ link.attr("href"));

System.out.println("text :"+ link.text());

}

}

获取URL的元信息

@Test

public void test3() throws IOException {

Document document = Jsoup.connect("https://passport.lagou.com").get();

System.out.println(document.head());

//获取URL的元信息

String description = document.select("meta[name=description]").get(0).attr("content");

System.out.println("Meta description : " + description);

String keywords = document.select("meta[name=keywords]").first().attr("content");

System.out.println("Meta keyword : " + keywords);

}

根据class名称获取表单

@Test

public void test4() throws IOException {

Document document = Jsoup.connect("https://passport.lagou.com/login/login.html?signature=8ECBCDF2B86061432B425A0B94FC863B&service=https%253A%252F%252Fwww.lagou.com%252F&action=login&serviceId=lagou&ts=1547711303033").get();

//获取拉勾网登入页面的body

//System.out.println(document.body());

//根据class名称获取表单

Elements formElement = document.getElementsByClass("form_body");

System.out.println(formElement.html());

//获取URL的元信息

for (Element inputElement : formElement) {

String placeholder = inputElement.getElementsByTag("input").attr("placeholder");

System.out.println(placeholder);

}

}

提取并打印表单参数

@Test

public void test5() throws IOException {

Document document = Jsoup.parse(new File("F:\\jsoup\\html\\login.html"),"utf-8");

Element loginform = document.getElementById("registerform");

Elements inputElements = loginform.getElementsByTag("input");

for (Element inputElement : inputElements) {

String key = inputElement.attr("name");

String value = inputElement.attr("value");

System.out.println("Param name: "+key+" -- Param value: "+value);

}

}

设置元素的html内容

@Test

public void test6() throws IOException {

Document document = Jsoup.parse(new File("F:\\jsoup\\html\\index.html"),"utf-8");

System.out.println(document.body());//

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

Element div = document.select("div").first();

div.html("

Hello

"); //

Hello

div.prepend("

Fiest

"); //

Fiest

Hello

div.append("

Last

"); //

Fiest

Hello

Last

System.out.println(document.body());

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

System.out.println(div.text());

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

//对元素包裹一个外部HTML内容

div.wrap("

Fiest

Hello

Last

System.out.println(document.body());

}

设置元素的文本内容

@Test

public void test7() throws IOException {

Document document = Jsoup.parse(new File("F:\\jsoup\\html\\index.html"),"utf-8");

System.out.println(document.body());//

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

Element div = document.select("div").first();

div.text("7 > 8 "); //

7 > 8

div.prepend("Fiest "); //

Fiest 7 > 8

div.append("Last "); //

Fiest 7 > 8 Last

System.out.println(document.body());

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

System.out.println(div.text());

}

android jsoup简书,爬虫之Jsoup相关推荐

  1. android jsoup简书,jsoup爬虫简书首页数据做个小Demo

    昨天LZ去面试,遇到一个大牛,被血虐一番,发现自己基础还是很薄弱,对java一些原理掌握的还是不够稳固,比如java反射注解,知道一点就是说不出来,很尴尬... 生命不止,学习不止啊 之前那个项目 Q ...

  2. android计步器简书,自定义View-仿QQ运动步数进度效果

    自定义View-仿QQ运动步数进度效果 一.写在前面 (1) 图一,仿QQ步数运行效果 (2) 图二,完整的圆效果 完整代码请看这 二.正文开始 (1)首先来个三部曲,自定义属性,布局设置,属性获取 ...

  3. android 仿简书评论,Android 开发仿简书登录框可删除内容或显示密码框的内容

    简书App 是我很喜欢的一款软件.今天就模仿了一下他的登录框.先上图: 好了下面上代码,自定义ImgEditText 继承与EditText.重写一些方法. package lyf.myimgedit ...

  4. android 仿简书评论,Android仿简书搜索框效果的示例代码

    前言 之前用简书的时候一直是在web端,后来下载了客户端,看到了搜索的那个动画,就尝试的去写了,没写之前感觉挺容易的,写了之后,就感觉里面还是有些要注意的东西的.话不多说,直接上图. Activity ...

  5. Android仿简书、淘宝等APP View弹出效果

    在用简书App的时候觉得这个View的弹出效果特别好,而且非常平滑. 先看看效果: 主要是scale,alpha,translation几个普通动画组合,这里不再分析. 实现效果图: 代码:https ...

  6. android仿简书编辑器,类似zine,简书的app移动编辑器-Light Seven

    原标题:类似zine,简书的app移动编辑器-Light Seven 无论你是否从事文字编辑工作,我相信每个人都会接触到文字编辑.既然接触到文字编辑,顺理成章的就会接触到文字编辑的应用和软件. 在生活 ...

  7. android jsoup简书,Jsoup学习及使用

    * Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容. 它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操 ...

  8. android 心跳 简书,如何高效维持网络长连接:手把手教你实现 自适应的心跳保活机制...

    前言 当实现具备实时性需求时,我们一般会选择长连接的通信方式 而在实现长连接方式时,存在很多性能问题,如 长连接保活 今天,我将 手把手教大家实现自适应的心跳保活机制,从而能高效维持长连接 目录 示意 ...

  9. android profiler 简书,使用AndroidStudio提供的Android Profiler工具和mat进行内存泄漏分析...

    废话不多说直接说流程 给项目中集成LeakCanary工具进行内存泄漏检测.发现有内存泄漏后该工具会进行提示 有内存泄露后我们需要使用as的profiler工具进行分析并获取到.hprof文件,步骤如 ...

最新文章

  1. 一线大厂的分布式唯一ID生成方案是什么样的?
  2. mysql之 表数据存放路径非datadir目录
  3. java基础--集合Connection/Map
  4. Python进阶10-标准库介绍01
  5. 实战项目一:爬取西刺代理(获取代理IP)
  6. Springboot制作小网盘系统(小项目)
  7. mysql 常用命令 汇总
  8. 长安大学微型计算机原理与接口技术答案,长安大学微机原理与接口技术AB卷试题与答案.doc...
  9. 规则引擎Drools简述
  10. Linux : SSHD服务
  11. 2018-8-10-WPF-修改图片颜色
  12. 解决XP IIS连接访问人数限制的问题
  13. Parcel 中文文档 | Parcel 中文网
  14. 李秘书讲写作:我讲写作课你愿意听吗
  15. Hutool - 对于网络的一些方法和增强
  16. pygame中blit()的参数的说明以及脏矩形动画形成的简要说明
  17. react上拉加载更多
  18. 英语六级(词组、同义替换)
  19. Java二维数组详解:二维数组的声明和初始化,以及获取二维数组的值
  20. Ant Trip(HDU 3018)---多笔画问题

热门文章

  1. 平安科技有新招:游戏防沉迷更彻底
  2. [solution]淘宝首页可以ping通但是打不开
  3. 如果用户希望将自己计算机中的照片,信息技术会考模拟题共31套的选择三
  4. c语言二进制转八进制数
  5. iis站点https绑定
  6. GitHub上史上最全的Android开源项目分类汇总
  7. 东北大学计算机衰落,中国“最悲情”的3所985大学,实力衰落严重,如今惨遭“降级”...
  8. 随笔-年薪百万就从小事做起
  9. 《软件方法》自测题解析011-梅西和帕瓦罗蒂
  10. 计算机毕业设计JavaSEOUL设计师品牌代购商城(源码+系统+mysql数据库+lw文档)