1,jsoup简介

jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。jsoup 是基于 MIT 协议发布的,可放心使用于商业项目。

jsoup 的主要功能如下:

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

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

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

2,jsoup使用

1,下载jsoup的jar包:http://jsoup.org/download 

2, jsoup英文的开发手册:http://jsoup.org/cookbook/ 

3,jsoup的jsoup cookbook中文版:http://www.open-open.com/jsoup/ 

下面是一个简单例子

1,获取新浪财经的website 以及标题,打印输出。

2,获取1中一个wensite的正文信息,打印并输出。

代码实现:

package jSoupTesting;

import java.io.IOException;

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


public class GetSinaUrlAndTitle {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        getUrlAndTitle();
        getTextMes();
    }
    
    public static void getUrlAndTitle()
    {
        String url="http://finance.sina.com.cn/";
        try {
            Document doc=Jsoup.connect(url).timeout(10000).get();//get all infomation from url website
            //System.out.println(doc);  
            Elements ListDiv = doc.getElementsByAttributeValue("class","fin_tabs0_c0");
            //System.out.println(ListDiv);
            for (Element div :ListDiv) {
                 Elements links = div.getElementsByTag("a");
                // System.out.println(links);
                 for (Element link : links) {
                     String linkHref = link.attr("href").trim();
                     String linkText = link.text().trim();
                     System.out.println(linkHref+"\t"+linkText);
                 }    
             }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    public static void getTextMes()
    {
        String url="http://finance.sina.com.cn/hy/20140823/100220099682.shtml";
        String textMes="";
        try {
            Document doc=Jsoup.connect(url).timeout(10000).get();
            Elements ListDiv = doc.getElementsByAttributeValue("class","blkContainerSblkCon BSHARE_POP");
            //System.out.println(ListDiv);
            for(Element div:ListDiv)
            {
                Elements textInfos=div.getElementsByTag("p");
                //System.out.println(textInfos);
                for(Element textInfo:textInfos)
                {
                    String text=textInfo.text().trim();
                    textMes=textMes+text+"\n";
                }
            }
            System.out.println(textMes);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
View Code

相关文章: