2013年9月16日 星期一

[Java]Jsoup--好用的抓取網頁工具(HTML & XML)

最近寫實驗室的這兩個月,一直需要會用到爬網頁(parser)的技術
自己也上網找資料找了許久,慢慢研究Jsoup才研究出一些端倪
以下即將介紹的,昰我在寫爬網頁的時候比較經常使用到的一些方法

<好站連結>
附上三個我最常用的網站連結
想要更深入的研究"Jsoup"可以參考

1. Jsoup官網
2. 好用的HTML parser--jsoup
3. 使用jsoup對HTML文檔的解析和操作

<安裝環境>
1.首先先進入Jsoup的官網




下載我們需要的 jar檔

2.接著將jar檔 link進來到我們的程式中(安裝環境 : eclipse)

我們的程式名字昰"TestUrl_TeachVersion",點選.java檔


點選Project 選 Properties


看著步驟點選
找到自己jar檔放置的位置

成功將jar檔加入
<使用Jsoup>
原始碼連結-->Test Source Code

以實做Google Directions API為例
詳細請參考我之前寫的淺談Google Directions API
1. 程式架構如下


public class test {

    public static void getpoint(String urlStr){ 
     Document doc = null;
     try {
 doc = Jsoup.connect(urlStr).get();
      } catch (IOException e1) {
 // TODO Auto-generated catch block
 e1.printStackTrace();
      }
    
    }
   public static void main(String[] args){


   }
   public static void link(float start_lat,float start_lng,float end_lat,float end_lng)
   {
       getpoint()
   }
}


在main裡面會先呼叫link()這個含數
link()含數會在呼叫getpoint()含數
getpoint的參數 urlStr這裡我們是以這個網址當作範例

http://maps.googleapis.com/maps/api/directions/xml?origin=24.79608,120.98709&destination=24.80237,120.97206&sensor=false&units=metric&mode=driving

這邊我們會使用Document類別,宣告物件doc
doc = Jsoup.connect(urlStr).get(); 這裡就會將網頁的資訊內容接住

2. 細看getpoint

Elements newsHeadlines1 = doc.select("start_location");
  
System.out.println(newsHeadlines1.size()); // know the tag size
System.out.println(newsHeadlines1.get(0)); 
System.out.println(newsHeadlines1.get(0).text()); // get the text
System.out.println(newsHeadlines1.get(0).tagName()); // print tag name
System.out.println(newsHeadlines1.get(0).empty()); // empty the text

再使用Elements類別,宣告物件來選擇我們有興趣的tag
上面程式碼昰附上我比較常用的幾個
執行結果如下 :




有想要知道更多方法,在從我最一開始附上的三個連結研究
如果我有新使用到的方法,覺得好用,也會再分想補充。

Related Articles

0 意見:

張貼留言

技術提供:Blogger.