關於Jsoup 抓取精準資料的幾種用法

情偌能自控發表於2017-07-25

需要使用的是jsoup-1.7.3.jar包 如果需要看文件我下載請借一步到官網:http://jsoup.org/  

最近需要用到jsoup,由於是第一次接觸,就好好學習了一下在網上搜集了一下簡單的demo,感覺入手也挺快的,他的功能主要是獲取html頁面的內容。
找到demo之後發現跟自己需要的有些出入,就修改成自己需要的樣子。話不多說,貼一下Java工程的測試程式碼 。

import java.io.IOException;

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

public class JsoupTest {
    static String url="http://www.cnblogs.com/zyw-205520/archive/2012/12/20/2826402.html";
    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {

        // TODO Auto-generated method stub
        //BolgBody();
        //article();
        Blog();
    }

    /**
     * 獲取指定HTML 文件指定的body
     * @throws IOException
     */
    private static void BolgBody() throws IOException {
        // 直接從字串中輸入 HTML 文件
        String html = "<html><head><title> 開源中國社群 </title></head>"
                + "<body><p> 這裡是 jsoup 專案的相關文章 </p></body></html>";
        Document doc = Jsoup.parse(html);
        System.out.println("獲取給定的html中的body中的內容"+doc.body().text());


        // 從 URL 直接載入 HTML 文件
        Document doc2 = Jsoup.connect(url).get();
        String title = doc2.body().text();
        System.out.println("獲取url中的body中的內容"+title);
    }

    /**
     * 獲取部落格上的文章標題和連結
     */
    public static void article() {
        Document doc;
        try {
            doc = Jsoup.connect("http://www.cnblogs.com/zyw-205520/").get();
            //獲取class為postTitle的div中的內容
            Elements ListDiv = doc.getElementsByAttributeValue("class","postTitle");
            for (Element element :ListDiv) {
                Elements links = element.getElementsByTag("a");
                for (Element link : links) {

                    String linkHref = link.attr("href");
                    String linkText = link.text().trim();
                    System.out.println("連結:"+linkHref);
                    System.out.println("文字:"+linkText);
                }
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    /**
     * 獲取指定部落格文章div中的內容
     */
    public static void Blog() {
        try {
            Document doc = Jsoup.connect("http://www.cnblogs.com/zyw-205520/archive/2012/12/20/2826402.html").get();
            Elements ListDiv = doc.getElementsByAttributeValue("class","postBody");
            System.out.println("111111111111111111"+ListDiv.text().trim());
            for (Element element :ListDiv) {
                System.out.println("222222222222222222222"+element.text().trim());
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

由於時間問題就不多寫了,有問題的可以留言。
第一次寫文,萌新。

相關文章