Nodes java_简谈java解析HTML(org.jsoup.nodes.Document)

本文介绍了在开发中使用Jsoup解析HTML文件的方法,包括从本地文件和URL获取HTML内容。示例代码展示了如何读取本地HTML文件,添加缺失的姓名数据,以及如何获取远程网页的标题。Jsoup不仅能够方便地解析HTML,还能进行DOM操作,适用于处理静态页面数据的场景。
摘要由CSDN通过智能技术生成

这篇文章主要是简单谈一下在开发工程中遇到的一个问题:解析HTML,用作记录方便自己以后查阅。

这次需要解析HTML用到的类是org.jsoup.nodes.Document。maven项目可以在pom.xml添加下面的依赖包获得该类的相关jar包。

org.jsoup

jsoup

1.8.3

jsoup不仅可以解析本地的HTML文件,还可以解析来自URL的HTML文件。下面分别来说一下如何解析这两种方式。

本地HTML文件

在获取本地HTML文件演示中,顺便介绍jsoup这个解析器的一个简单功能。我们先看如下页面:

7c8154e10bb770a1b9a88edbe57f0419.png

假设这是 一个某班级的成绩列表,其中发现第二条记录姓名是没有数据的,怎么办?有人说,是数据库数据不全导致的,检查数据库数据。但是别忘了,这个是一个已经生成好了的静态HTML页面,如果通过学号201200401112查询数据库,姓名是有数据的。这时候我们该如何给学号为201200401112的这位同学加上姓名呢?先抛开如何实现,有些人会有疑问这样的业务场景是否存在呢?可以告诉你,在我工作不到一年中,就遇到这样的业务场景。大概业务是这样的,当初要生成这个静态页面是因为要保存当时业务数据,提供以后查阅,至于为什么不用数据库保存当时记录,是因为这个关乎签章,总之是有这样的情况的。那么,进入如何去实现刚刚的那个问题,看代码:

@RequestMapping("/addName")public void addName(HttpServletResponse response) throwsIOException {//设置响应字符编码

response.setCharacterEncoding("UTF-8");//获取本地文件

String filePath = "G:\\HBuilder\\bqjrlogin\\score.html";

File file= newFile(filePath);

Document doc= Jsoup.parse(file, "UTF-8");//获取td标签集合

Elements tds = doc.getElementsByTag("td");//在td集合标签中,在第九个添加姓名

tds.get(9).appendText("张大胖");

response.getWriter().write(doc.toString());

response.getWriter().flush();

response.getWriter().close();

}

运行结果:

aede7c6b688d5efac33967064273bc19.png

丢失的姓名回来了。这里添加的姓名是写死的,在实际开发中可以查询数据库,添加数据的数据。

Document doc = Jsoup.parse(file, "UTF-8"); 就这样,就可以解析到本地的HTML文件,具体实现注释中已写明。

URL获取的HTML文件

跟解析本地HTML差不多,还是直接看代码:

packagecom.wh.util;importorg.jsoup.Jsoup;importorg.jsoup.nodes.Document;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.io.IOException;public classTest {private static final Logger LOGGER = LoggerFactory.getLogger(Test.class);public static voidmain(String[] args) {try{

Document doc= Jsoup.connect("http://weixin.res.meizu.com/mx6/index.html").get();//获取页面的标题

String title =doc.title();

LOGGER.info(title);

}catch(IOException e) {

LOGGER.error("Test.main() error:" +e);

}

}

}

跟解析本地HTML文件唯一不一样的就是:

Document doc = Jsoup.connect("http://weixin.res.meizu.com/mx6/index.html").get();

获取到URL地址的HTML文件后,其他操作都样。这里演示了如何获取到URL为:http://weixin.res.meizu.com/mx6/index.html的标题。运行结果如下:

7b18fd64b3c1d61fea5fbb7ee72c3e2d.png

当然了,除了获取标题之外还可以对当前页面做很多操作,比如获取图片的标签src的地址,等等。这里只是简单做个例子,起到抛砖引玉作用,更多功能,需要深究。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值