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(); } } }