简单使用jsoup

来源:互联网 发布:阿里云服务器登录失败 编辑:程序博客网 时间:2024/05/21 08:57

中文在线手册

下载地址 

jsoup是java的一款html解析器,可以很方便的对html进行解析。


1.获取标题:

public class TestJsoup {public static void main(String[] args) {Document doc;try {// 获取文档doc = Jsoup.connect("http://news.ifeng.com/").get();// 获取bodyElement content = doc.body();// 标签集合,是每页的标题和链接Elements divs = content.select("div");for (int i = 0; i < divs.size(); i++) {// 今日要闻if ("box_02".equals(divs.get(i).attributes().get("class"))) {Elements titles = divs.get(i).select("a");for (Element title : titles) {if (""!=title.text()) {System.out.println(title.text());//链接system.out.printlin(title.select("a").attr("href");); }}}}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

结果:

2.获取新闻内容:

public static void main(String[] args) {Document doc;try {// 获取文档doc = Jsoup.connect("http://news.ifeng.com/world/special/malaixiyakejishilian/content-4/detail_2014_03/30/35274873_0.shtml").get();// 获取bodyElement content = doc.getElementById("main_content");// 标签集合,是每页的标题和链接Elements divs = content.select("p");for (Element ele : divs) {// 假如标签是图片地址if ("detailPic".equals(ele.attributes().get("class"))) {System.out.println(ele.select("img").attr("src"));} else {System.out.println(ele.text() + "\n");}}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}

结果:


3.获取video信息:


这是某个新闻的视频消息,我们需要解析script里面的参数信息。

// videos = p.select("script");if (!s.isEmpty()) {// 将参数列表转为文本String data = s.first().data();data = data.replaceAll("var", "");String[] arr;// arr= data.split("',");// for (int i = 0; i < arr.length; i++) {// String str = arr[i];// str = str.replaceAll("flash_[\\S]{0,} = '", "");// System.out.println(str.trim());// }arr = data.split(",");for (String str : arr) {String[] ir = str.split("=");System.out.println(ir[0].trim() + ";" + ir[1].trim());}}

结果:


 完整的例子:

public class Artcle {private String artLink;private Document Doc;private Element ele;private Elements eles;// "http://news.qq.com/a/20141001/018175.htm?tu_biz=1.114.2.1"public Artcle(String str) {this.artLink = str;}public Document getDoc(String web) {Document doc = null;try {doc = Jsoup.connect(web).get();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();return null;}return doc;}public void getArtcle() {if (null == (Doc = getDoc(artLink))) {return;}ele = Doc.select("div#Cnt-Main-Article-QQ").first();eles = ele.select("p");for (Element p : eles) {Elements s = null;// videos = p.select("script");if (!s.isEmpty()) {// 将参数列表转为文本String data = s.first().data();data = data.replaceAll("var", "");String[] arr;// arr= data.split("',");// for (int i = 0; i < arr.length; i++) {// String str = arr[i];// str = str.replaceAll("flash_[\\S]{0,} = '", "");// System.out.println(str.trim());// }arr = data.split(",");for (String str : arr) {String[] ir = str.split("=");System.out.println(ir[0].trim() + ";" + ir[1].trim());}}}}}

注意:

        1.使用的方法还是很简单的,在有时候解析网页的时候会抛出io异常,自己注意就是了。

2.// 将参数列表转为文本
String data = s.first().data();

很重要的方法,将script中的参数列表转为字符串格式,然后我们通过对字符串的裁剪等操作,就可以得到需要的信息。

0 0
原创粉丝点击