160718、jsoup-1.8.1.jar操作html
导入jsoup-1.8.1.jar
import java.io.IOException;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.safety.Whitelist;
import org.jsoup.select.Elements;
/**
* jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
jsoup的主要功能如下:
1. 从一个URL,文件或字符串中解析HTML;
2. 使用DOM或CSS选择器来查找、取出数据;
3. 可操作HTML元素、属性、文本;
jsoup是基于MIT协议发布的,可放心使用于商业项目。
注意:获取到了document对象之后,可以类似于操作dom一样来操作
*
*/
public class TestJsoup {
/**
* 文档输入
* jsoup 可以从包括字符串、URL地址以及本地文件来加载HTML 文档,并生成Document 对象实例。
* 获取指定HTML 文档指定的body
* @throws IOException
*/
public static Document getBody() throws IOException{
/**方式一*/
String html = "<html><head><title>开源中国社区</title></head>"
+"<body><p>这里是jsoup 项目的相关文章</p></body></html>";
Document doc1 = Jsoup.parse(html);//直接从字符串中输入HTML 文档,有很多其他的构造方法可以使用
System.out.println(doc1);
/**方式二*/
Document doc2 = Jsoup.connect("http://www.baidu.com/more/index.html")//
.data("query", "java")//请求参数
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36")//设置User-Agent
.cookie("auth", "token")//设置cookie
.timeout(3000)//设置连接超时时间
.post();//使用POST方法访问URL
System.out.println(doc2);
/**方式三*/
Document doc3 = Jsoup.connect("http://www.baidu.com").get();//直接获取doc
System.out.println(doc3);
return doc3;
}
/**
* 解析并提取HTML 元素
* 里面有很多操作document的方法,这里以通过id做例子
* @throws IOException
*/
public static Element getElement() throws IOException{
Document doc = Jsoup.connect("http://www.baidu.com").get();
Element elementById = doc.getElementById("ftConw");
System.out.println(elementById);
return elementById;
}
/**
* 改变属性,样式等等
* 可以通过jsoup提供的各种选择器操作很多东西
* @throws IOException
*/
public static void changeAttr() throws IOException{
Document doc = Jsoup.connect("http://www.baidu.com").get();
Element elementById = doc.getElementById("ftConw");
Elements select = elementById.select("a");
Element element = select.get(0);
System.out.println("before:"+element);
element.removeAttr("onmousedown");
System.out.println("after:"+element);
}
/**
* HTML 文档清理
* @throws IOException
*/
public static void cleanHtml() throws IOException{
Connection connect = Jsoup.connect("http://www.baidu.com");
Document doc = connect.get();
/**
* Whitelist.basic():a, b, blockquote, br, cite, code, dd, dl, dt, em, i, li, ol, p, pre, q,small,strike, strong, sub, sup, u, ul;
* Whitelist.basicWithImages():a, b, blockquote, br, cite, code, dd, dl,dt, em, i, li, ol, p, pre, q, small, strike, strong, sub, sup, u, ul、img、src;
* Whitelist.relaxed():a, b, blockquote,br, caption, cite, code, col, colgroup, dd, dl, dt, em, h1, h2, h3, h4, h5, h6,i, img, li, ol, p, pre, q, small,
strike, strong, sub, sup, table, tbody, td,tfoot, th, thead, tr, u, ul;
* Whitelist.simpleText():简单的文本属性b, em, i, strong, u
* Whitelist.none();//只保留了文本
* 如果还不能满足要求,可以使用使用addAttributes、addEnforcedAttribute、addProtocols、addTags进行添加
* 可以结合springmvc的initBinder一起使用
*/
Whitelist whitelist = Whitelist.basic();//只保留了文本
String clean = Jsoup.clean(doc.toString(), whitelist);
System.out.println(clean);
}
public static void main(String[] args) throws IOException {
//getBody();
// getElement();
// changeAttr();
cleanHtml();
}
}
160718、jsoup-1.8.1.jar操作html的更多相关文章
- poi-3.11-beta2-20140822.jar操作excel方法
poi-3.11-beta2-20140822.jar操作excel方法 根据不同类型读取值的方法: // 获取单元格内不同类型的值 public String getValueByType(HSSF ...
- jar - 操作jar包的工具
jar - Manipulates Java Archive (JAR) files. jar命令是一种通用的存档和压缩工具,基于ZIP和ZLIB压缩格式. 常用格式: * 创建jar文件 jar c ...
- 使用jxl.jar操作Excel
在工程的build path中添加jxl.jar,网址:http://www.andykhan.com/jexcelapi/ import java.io.BufferedReader; import ...
- org.jsoup.Jsoup找不到jar包问题解决思路
今天在idea中导入项目,出现了这样的问题 通过idea的自带的导包功能,却提示找不到这个东西.于是就去maven仓库搜索这个咚咚 <!-- https://mvnrepository.com/ ...
- 常见 jar包详解
常见 jar包详解 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期 ...
- Jsoup解析HTML、加载文档等实例
一.引入jsoup的jar包:http://jsoup.org/download 补充:http://jsoup.org/apidocs/ Jsoup API 可以了解更详细的内容 二.Js ...
- Jsoup简介
Jsoup简介 一.概述 Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来 ...
- Jsoup使用随记
这段时间工作比较空闲,在网上找资料学习的时候看到数据抓取这一块,来了兴趣 用jsoup实现数据抓取着实方便,唯一美中不足的是官方API是英文版的,对我这样英语水平不好的程序员来说着实困扰,只能一点点的 ...
- 常用jar包用途
jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期管理的常用方法. jaxrp ...
随机推荐
- Android成长之路-实现监听器的三种方法
第一种: 在Test类中 定义一个类接口OnClickListener 第二种:直接在Test类上写一个接口 其中的this相当于new OnClickListener()对象, 即class ...
- FreeSWITCH技巧:如何向通话的另一方号码发送dtmf?
注:这里的文章都是本人的日常总结,请尊重下个人的劳动成果,转载的童鞋请注明出处,谢谢. 如您转载的文章发生格式错乱等问题而影响阅读,可与本人联系,无偿提供本文的markdown源代码. 联系邮箱:ji ...
- php的instanceof和判断闭包Closure
类型运算符 instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例,在此之前用 is_a(),但是后来 is_a() 被废弃 <?php class MyClass ...
- 调试JDK1.8源码的方法
背景 在学习JDK源码的时候,免不了需要调试JDK的源码. 比如:想理解ConcurrentHashMap的put(K k, V v)方法,JDK自带的rt.jar文件是支持断点调试,但是却看不到变量 ...
- c++11 thread (目前我使用的ZThread库)
目前为止(2014-11-30),GCC其实已经基本上完全支持C++11的所有功能了,事实上从GCC4.7之后,就支持了-std=c++11选项,在4.7版本之前,也开始支持-std=c++0x的选项 ...
- java大数模板
java 大数计算 这几天做了几道用大数的题,发现java来做大数运算十分方便.对acmer来说是十分实用的 1.valueOf(parament); 将参数转换为制定的类型 比如 int a=3 ...
- getCanonicalPath getAbsolutePath区别
1.在winows环境下它们的区别是 getCanonicalPath是标准路径,没有特殊字符,getAbsolutePath是有特殊字符的 2.在AIX系统中它们的区别: 首先编译:javac ...
- poj1961 Period kmp解决找字符串的最小循环节
/** 题目:poj1961 Period 链接:http://poj.org/problem?id=1961 题意:求从1到i这个前缀(2<=i<=N) ,如果有循环节(不能自身单独一个 ...
- ssd算法的pytorch实现与解读
首先先放下github地址:https://github.com/acm5656/ssd_pytorch 然后放上参考的代码的github地址:https://github.com/amdegroot ...
- pycharm重置设置,恢复默认设置
备忘,备忘,备忘 window 系统 找到下方目录-->删除. 再重新打开pycharm # Windows Vista, 7, 8, 10: <SYSTEM DRIVE>\User ...