簡單使用jsoup__js

來源:互聯網
上載者:User

中文線上手冊

下載地址 

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中的參數列錶轉為字串格式,然後我們通過對字串的裁剪等操作,就可以得到需要的資訊。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.