java——强大的jsoup

java——强大的jsoup

1、jsoup简介和功能

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

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

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

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

jsoup下载:jsoup.jar

2、加载HTML文档

       jsoup 可以从包括字符串、URL 地址以及本地文件来加载 HTML 文档,并生成 Document 对象实例。

       1、从字符串中加载HTML文档

// 直接从字符串中输入 HTML 文档
		String html = "<html><head><title>jsoup读入文档</title></head>" + "<body><p>jsoup使用字符串读入文档</p></body></html>";
		Document doc = Jsoup.parse(html);
		System.out.println(doc);
		String title = doc.title();
		System.out.println(title);
       2、通过URL加载HTML文档

// 从 URL 直接加载 HTML 文档
		try {
			Document doc1 = Jsoup.connect("http://www.baidu.com").get();
			title = doc1.title();
			System.out.println(doc1);
			System.out.println(title);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

      

try {
			Document doc2 = Jsoup.connect("http://www.oschina.net/") 
					  .data("query", "Java")   // 请求参数
					  .userAgent("I ’ m jsoup") // 设置 User-Agent 
					  .cookie("auth", "token") // 设置 cookie 
					  .timeout(3000)           // 设置连接超时时间
					  .post();                 // 使用 POST 方法访问 URL 
			System.out.println(doc2);
			title = doc2.title();
			System.out.println(title);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}                 // 使用 POST 方法访问 URL 

       3、通过本地文件加载HTML文件

// 从文件中加载 HTML 文档
		 File input = new File("test.html"); 
		 try {
			Document doc3 = Jsoup.parse(input,"UTF-8","http://www.oschina.net/");
			System.out.println(doc3);
			title = doc3.title();
			System.out.println(title);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        其中,parse方法中第三个参数的功能为:当 HTML 文档使用相对路径方式引用外部文件时,jsoup 会自动为这些 URL 加上一个前缀,也就是这个 baseURL。例如 <a href=/project> 开源软件 </a> 会被转换成 <a href=http://www.oschina.net/project> 开源软件 </a>。

3、初步解析HTML页面数据

try {
			Document doc = Jsoup.connect("http://www.baidu.com").get();
			System.out.println(doc);
			Element content = doc.getElementById("wrapper");//先观察要爬取的网站
			System.out.println(content);
			Elements links = content.getElementsByTag("a");
			for (Element link : links) {
				String linkHref = link.attr("href");
				String linkText = link.text();
				System.out.println(linkHref + "\t"+linkText);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
       getElementById、getElementsByTag等方法都类似于jquery中的,太方便啦!

4、试用jsoup的选择器解析数据

        jsoup最大的方便之处就是它拥有匹配到CSS的选择器

try {
			Document doc = Jsoup.connect("http://www.baidu.com").get();
			System.out.println(doc);
			Elements links = doc.select("a[href]"); // 具有 href 属性的链接
			for(Element link:links){
				System.out.println(link);
			}
			System.out.println("-----------------------------------");
			Elements pngs = doc.select("img[src$=.png]");// 所有引用 png 图片的元素
			for(Element png:pngs){
				System.out.println(png);
			}
			System.out.println("-----------------------------------");
			Elements resultLinks = doc.select("#cp > a"); //id为cp中的a
			for(Element link:resultLinks){
				System.out.println(link);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        选择器的基本用法:

        组合用法:


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄鸭and小黑鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值