風行天下

          JAVA太極
          posts - 4, comments - 10, trackbacks - 0, articles - 55
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          HTMLParser 過濾分析

          Posted on 2005-04-04 11:24 風太少 閱讀(1383) 評論(0)  編輯  收藏
          SECTION 01 下載安裝

          如果老板今天要叫你寫一個小程序, 去抓取某個網頁的所有 image, 該怎么做呢, 你必須先把所有的 image url 先 parse 出來, 接著一個一個圖片下載下來, 那么 image url 該如何 parse , 這個就是 htmlparser 的功能了, 當然, 應用方面非常的廣, 在 xml 成為數據交換還沒有普及化時, 利用其它網站的資料來加強自己網站的功能, 也是一件很重要的工作, 此外, 請注重知識產權


          目前 realse 的版本是 1.3 Htmlparser 下載解壓縮后該目錄有 src.zip 是 source code.


          SECTION 02 范例

          因為 docs\docs 提供的范例有一點版本上的錯誤, method 名稱可能不太正確, 不過觀念是一樣的, 可能要多測試一下, 最好有 IDE 去設置 lib (htmlparser.jar) 接著自動帶出 Method Name 來修正這個錯誤

          我改了幾個正確的范例如下

          AllNodeImageExtractor.java 下載該 URL 所有的 image 名稱
          
          import org.htmlparser.*;
          import org.htmlparser.visitors.*;
          import org.htmlparser.util.*;
          import org.htmlparser.tags.*;
          
          
          /**
           * LinkExtractor extracts all the links from the given webpage
           * and prints them on standard output.
           */
          public class AllNodeImageExtractor {
          
          
            public static void main(String[] args) {
              try {
                  Parser parser = new Parser("http://www.softleader.com.tw/companyIntro.screen");
          
                    ObjectFindingVisitor visitor =
                      new ObjectFindingVisitor(ImageTag.class,true);
          
                    parser.registerScanners();
          
                    // Instead of registering all scanners,
                    // you could also do - parser.addScanner(new ImageScanner(""));
          
                    Node [] images = parser.extractAllNodesThatAre(ImageTag.class);
          
                    System.out.println(images.length);
                    for (int i=0;i < images.length;i++) {
                       ImageTag imageTag = (ImageTag)images[i];
                       System.out.println(imageTag.getImageURL());
                    }
              }
              catch (ParserException ex) {
                  System.out.println(ex);
              }
          
            }
          }
          
          
          這程序非常簡單, javac 編譯完后直接用 java AllNodeImageExtractor 執行, 就可以列出所有的 imageName 了, 他的程序步驟就是
          1. 先產生一個 Parser 連結到 URL
          2. 設定你要下載的模式 vistor ( 可以使用內建的或自己開發 )
          3. parser 注冊一個 scanner
          4. 真正去 parser 產生數據返回 array 給 node
          5. println 數據



          SECTION 03 JavaBeans

          執行方式
          cmd>java -classpath htmlparser.jar org.htmlparser.beans.BeanyBaby

          他的 BeanyBaby.class 在 htmlparser.jar 中, 你可以參考 org.htmlparser.beans.* 的所有程序, 如果你要連結到其它網頁, 你可以修改 bb.setURL("http://whatUwannaGo");
          
              public static void main (String[] args)
              {
                  BeanyBaby bb = new BeanyBaby ();
                  bb.show ();
                  bb.setURL ("http://www.netbeans.org");
              }
          



          SECTION 03 后記

          或許你很幸福完全不會遇到要轉 html 的時候, 只是我以前為了parse html 用 mfc 寫了很久, 現在利用 這個 lib 所花的功就只有把這些 documentum 讀一讀, 范例看一看, 參考 api doc 實現就好了, 真不知道 M$ 是否有這種 opensource support C#, 或許 .NET 和 JAVA 的差異就是在這吧 ~~~~~~~

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 平乐县| 新乐市| 乐亭县| 成安县| 澳门| 朝阳区| 长阳| 濮阳县| 易门县| 拜城县| 抚顺县| 始兴县| 永宁县| 富裕县| 宝坻区| 苏尼特左旗| 平塘县| 修文县| 团风县| 娄底市| 常宁市| 阿尔山市| 青龙| 罗江县| 旺苍县| 长海县| 三都| 澄江县| 土默特右旗| 天峻县| 广东省| 淄博市| 临洮县| 辉县市| 油尖旺区| 庆安县| 登封市| 万州区| 凤庆县| 留坝县| 罗城|