jsoup入门示例程序(网络爬虫)
  • 2024-02-16 16:31:05
  • 217 热度
  • 0 评论

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


jsoup的主要功能如下:

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

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

3. 可操作HTML元素、属性、文本;

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


解析XML和解析JSON大家都已经在程序中使用很多了,解析HTML也是一个意思,就是用法不同而已。

这里实用jsoup来解析我自己的博客,抓取博客首页的标题列表并打印,该程序为入门示例程序。


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>

结束。


Flame

Hello world!

0 评论
留下评论