Jsoup的学习与使用

Jsoup的详细介绍可以参考:http://www.open-open.com/jsoup/

如果对于前端html,js,css有了解的会发现Jsoup绝对是一款高效的开源软件,其一大特点就是支持选择器来对html进行解析,工具的语法与js有些相似,用起来非常方便。下面的代码是从一个古诗词网站上抓取辛弃疾的词,很简单,基本上覆盖了Jsoup的基础语法。

package org.zdnuist.jsoup;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/**
 * 开源工具Jsoup的学习
 * @author zdnuist
 *
 */
public class JsoupDemo {

	public static void main(String[] args) {
		parseHtml();
		parseHtmlFromURL();
		System.out.println("***************");
		getAllLink();

	}

	/**
	 * 解析HTML-String
	 */
	public static void parseHtml() {
		String html = "<html><head><title>First parse</title></head>"
				+ "<body><p>Parsed HTML into a doc.</p></body></html>";
		Document doc = Jsoup.parse(html);
	}

	/**
	 * 解析指定网址中的html Connection 接口还提供一个方法链来解决特殊请求,具体如下:
	 * 
	 * Document doc = Jsoup.connect("http://example.com") .data("query", "Java")
	 * .userAgent("Mozilla") .cookie("auth", "token") .timeout(3000) .post();
	 * 这个方法只支持Web URLs (http和https 协议); 假如你需要从一个文件加载,可以使用 parse(File in, String
	 * charsetName) 代替。
	 */
	public static void parseHtmlFromURL() {
		try {
			Document doc = Jsoup.connect("http://www.baidu.com/").get();
			String title = doc.title();
			System.out.println(title);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 获取到具体的内容
	 * @param url
	 */
	public static void parseXINQIJIFromNet(String url) {
		try {
			Document doc = Jsoup
					.connect(url)
					.timeout(3 * 1000).get();
			String title = doc.title();
			System.out.println(title);
			Elements content = doc.select(".content");
			Element body = content.get(0);
			
			System.out.println(body.text().replaceAll("\\s+", "\n"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 取得所有链接
	 */
	public static void getAllLink(){
		try {
			Document doc = Jsoup.connect("http://www.xigutang.com/songci/xinqiji/")
			.timeout(3*1000).get();
			Elements listbox = doc.select(".listbox");
			Element list = listbox.first();
			Elements links = list.select("a[href]");
			System.out.println(links.size());
			for(Element link : links){
				parseXINQIJIFromNet(link.attr("abs:href"));
				System.out.println("**************************");
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值