jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
jsoup的主要功能如下:
1. 从一个URL,文件或字符串中解析HTML;
2. 使用DOM或CSS选择器来查找、取出数据;
3. 可操作HTML元素、属性、文本;
jsoup是基于MIT协议发布的,可放心使用于商业项目。
解析XML和解析JSON大家都已经在程序中使用很多了,解析HTML也是一个意思,就是用法不同而已。
这里实用jsoup来解析我自己的博客,抓取博客首页的标题列表并打印,该程序为入门示例程序。
如图,如果访问www.javacui.com网站,查看源码,会看到如上内容。
分析一下,ID为left的DIV里面就是文章列表,列表以dl进行划分,其中标题位于dl-dt-h2-a标签内。根据以上分析,编写如下代码。
package com.cui.test; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; /** * 获取www.javacui.com网站的文章列表 * @author java小强 */ public class JavacuiSpider { public static void main(String[] args) { try { Document doc = null; doc = Jsoup.connect("http://www.javacui.com/").get(); // 直接发送HTTP请求获得 Element content = doc.getElementById("left"); // 根据ID获得文章列表DIV Elements elements = content.getElementsByTag("dl"); // DIV中每个dl都是一篇文章 int i = 1; // 用于显示第几篇文章 for (Element e : elements) { Elements as = e.getElementsByAttribute("target"); // 根据属性获取,一遍文章中有两个a,都有target属性,第一个是标题连接,第二个是点击详细 Element a = as.get(0); // 获取第一个,既标题连接 String title = a.text(); // 问的标签内的文本 System.out.println("第【" + i + "】篇文章标题:" + title); i++; } } catch (Exception e) { e.printStackTrace(); } } }
程序会像爬虫一样读取博客源码,然后解析出文章标题并打印。
请用maven引用jsoup的jar包
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.7.2</version> </dependency>
结束。
Java小强
未曾清贫难成人,不经打击老天真。
自古英雄出炼狱,从来富贵入凡尘。
发表评论: