利用jsoup解析html
作者:网络转载 发布时间:[ 2016/12/29 10:31:19 ] 推荐标签:测试开发技术 html
1、jsoup简介
jsoup 是一款 Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。jsoup 的主要功能如下:
(1)从一个 URL,文件或字符串中解析HTML;
(2)使用DOM或CSS选择器来查找、取出数据;
(3)可操作HTML元素、属性、文本;
2、maven配置
<!-- jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.3</version>
</dependency>
3、解析一个HTML文档
3.1 从字符串解析
String html = "<html><head><title>First parse</title></head>" + "<body><p>Parsed HTML into a doc.</p></body></html>";
<!-- 解析之后可以用Document的方法,拿出html中需要的数据 -->
Document doc = Jsoup.parse(html);
3.2 从URL获取解析
Document doc = Jsoup.connect("http://example.com/").get();
String title = doc.title();
(1)说明
connect(String url)方法创建一个新的 Connection, 和get()取得和解析一个HTML文件。如果从该URL获取HTML时发生错误,便会抛出 IOException,应适当处理。Connection 接口还提供一个方法链来解决特殊请求,具体如下:
Document doc = Jsoup.connect("http://www.oschina.net/")
.data("query", "Java") // 请求参数
.userAgent("I ’ m jsoup") // 设置 User-Agent
.cookie("auth", "token") // 设置 cookie
.timeout(3000) // 设置连接超时时间
.post(); // 使用 POST 方法访问 URL
这个方法只支持Web URLs (http和https 协议); 假如你需要从一个文件加载,可以使用parse(File in, String charsetName) 代替。
3.3 从文件解析
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://www.oschina.net/");
(1)说明
parse的第三个参数,需要在这里指定一个网址(虽然可以不指定),因为HTML文档中会有很多例如链接、图片以及所引用的外部脚本、css 文件等,而第三个名为 baseURL 的参数的意思是当 HTML 文档使用相对路径方式引用外部文件时,jsoup 会自动为这些 URL 加上一个前缀,也是这个 baseURL。
例如 :<a href=/project> 开源软件 </a> 会被转换成 <a href=http://www.oschina.net/project> 开源软件 </a>。
4、遍历一个HTML文档
4.1 Document方式遍历元素
4.1.1 搜索元素方法
getElementById(String id)
getElementByTag(String tag)
getElementByClass(String className)
getElementByAttribute(String key)
siblingElements(), firstElementSibling(), lastElementSibling(), nextElementSibling(), previousElementSibling()
parent(), children(), child(int index)
4.1.2 获取元素数据
attr(String key) – 获取key属性
attributes() – 获取属性
id(), className(), classNames()
text() – 获取文本内容
html() – 获取元素内部HTML内容
outerHtml() – 获取包括此元素的HTML内容
data() – 获取<srcipt>或<style>标签中的内容
tag(), tagName()
4.2 选择器语法遍历元素(jsoup与其他解析器的区别是可以使用类似jquery的选择器语法来搜索及过滤出所需的元素)
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11