<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 297,  comments - 1618,  trackbacks - 0
           出處:http://blog.csdn.net/redez/archive/2005/11/21/534277.aspx
           說明:本文參考HTMLParser使用,并在該文的基礎上進行了部分修改。
    一. 簡介
           htmlparser用于 對html頁面進行解析,它是一個功能比較強大的工具。
           項目首頁http://htmlparser.sourceforge.net/
           下載地址http://sourceforge.net/project/showfiles.php?group_id=24399
    二. 使用舉例
           下面通過一個簡單的htmlparser的使用舉例,來學習htmlparser的使用。代碼如下:
    package com.amigo.htmlparser;

    import java.io.*;
    import java.net.URL;
    import java.net.URLConnection;

    import org.htmlparser.filters.*;
    import org.htmlparser.*;
    import org.htmlparser.nodes.*;
    import org.htmlparser.tags.*;
    import org.htmlparser.util.*;
    import org.htmlparser.visitors.*;

    /**
     * 測試HTMLParser的使用.
     * 
    @author <a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
     * Creation date: 2008-1-18 - 上午11:44:22
     
    */

    public class HTMLParserTest {
        
    /**
         * 入口方法.
         * 
    @param args
         * 
    @throws Exception
         
    */

        
    public static void main(String args[]) throws Exception {
            String path 
    = "http://www.tkk7.com/amigoxie";
            URL url 
    = new URL(path);
            URLConnection conn 
    = url.openConnection();
            conn.setDoOutput(
    true); 
            
            InputStream inputStream 
    = conn.getInputStream();
            InputStreamReader isr 
    = new InputStreamReader(inputStream, "utf8");
            StringBuffer sb 
    = new StringBuffer();
            BufferedReader in 
    = new BufferedReader(isr);
            String inputLine;
            
            
    while ((inputLine = in.readLine()) != null{
                sb.append(inputLine);
                sb.append(
    "\n");
            }

            
            String result 
    = sb.toString();

            readByHtml(result);
            readTextAndLinkAndTitle(result);
        }

        
        
    /**
         * 按頁面方式處理.解析標準的html頁面
         * 
    @param content 網頁的內容
         * 
    @throws Exception
         
    */

        
    public static void readByHtml(String content) throws Exception {
            Parser myParser;
            myParser 
    = Parser.createParser(content, "utf8");
            HtmlPage visitor 
    = new HtmlPage(myParser);
            myParser.visitAllNodesWith(visitor);

            String textInPage 
    = visitor.getTitle();
            System.out.println(textInPage);
            NodeList nodelist;
            nodelist 
    = visitor.getBody();
            
            System.out.print(nodelist.asString().trim());
        }


        
    /**
         * 分別讀純文本和鏈接.
         * 
    @param result 網頁的內容
         * 
    @throws Exception
         
    */

        
    public static void readTextAndLinkAndTitle(String result) throws Exception {
            Parser parser;
            NodeList nodelist;
            parser 
    = Parser.createParser(result, "utf8");
            NodeFilter textFilter 
    = new NodeClassFilter(TextNode.class);
            NodeFilter linkFilter 
    = new NodeClassFilter(LinkTag.class);
            NodeFilter titleFilter 
    = new NodeClassFilter(TitleTag.class);
            OrFilter lastFilter 
    = new OrFilter();
            lastFilter.setPredicates(
    new NodeFilter[] { textFilter, linkFilter, titleFilter });
            nodelist 
    = parser.parse(lastFilter);
            Node[] nodes 
    = nodelist.toNodeArray();
            String line 
    = "";
            
            
    for (int i = 0; i < nodes.length; i++{
                Node node 
    = nodes[i];
                
    if (node instanceof TextNode) {
                    TextNode textnode 
    = (TextNode) node;
                    line 
    = textnode.getText();
                }
     else if (node instanceof LinkTag) {
                    LinkTag link 
    = (LinkTag) node;
                    line 
    = link.getLink();
                }
     else if (node instanceof TitleTag) {
                    TitleTag titlenode 
    = (TitleTag) node;
                    line 
    = titlenode.getTitle();
                }

                
                
    if (isTrimEmpty(line))
                    
    continue;
                System.out.println(line);
            }

        }

        
        
    /**
         * 去掉左右空格后字符串是否為空
         
    */

        
    public static boolean isTrimEmpty(String astr) {
            
    if ((null == astr) || (astr.length() == 0)) {
                
    return true;
            }

            
    if (isBlank(astr.trim())) {
                
    return true;
            }

            
    return false;
        }


        
    /**
         * 字符串是否為空:null或者長度為0.
         
    */

        
    public static boolean isBlank(String astr) {
            
    if ((null == astr) || (astr.length() == 0)) {
                
    return true;
            }
     else {
                
    return false;
            }

        }

    }


    posted on 2008-01-18 14:18 阿蜜果 閱讀(14594) 評論(2)  編輯  收藏 所屬分類: Java


    FeedBack:
    # re: HTMLParser的使用
    2008-04-17 18:20 | zzz
    請問一下,怎樣將修改過得html保存到文件中
    code如下
    parser = new Parser(getContentByLocalFile(file));
    NodeFilter nt = new NodeClassFilter(ImageTag.class) ;
    NodeList tmpImageList = (NodeList) parser.parse(nt);

    /*linkTmpHash = new Hashtable();
    for (int i = 0; i < length; i++) {
    Element tmpElement = (Element) tmpNodeList.item(i);
    String href = tmpElement.getAttribute("href");
    if (href != null && !href.equals("")) {
    linkTmpHash.put(href, "");
    }
    }
    data.setHrefs((String[]) linkTmpHash.keySet().toArray(new String[linkTmpHash.size()]));*/
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter (new FileOutputStream (file)));
    linkTmpHash = new Hashtable();
    for (int i = 0; i < tmpImageList.size(); i++) {
    imgnode = (ImageTag)tmpImageList.elementAt(i);
    String src = imgnode.getImageURL();
    if (URLPathNameUtil.isAbsolutePath(src)) {
    if (testAbsolutePath) {
    testImagetag(file,src);
    }
    } else {
    if (testRelativePath) {
    testImagetag(file, src);
    }
    }
    if(getRealPath()!=null){
    imgnode.setImageURL(getRealPath());
    writer.write(tmpImageList.toHtml());
    }
    /*if (src != null && !src.equals("")) {
    linkTmpHash.put(src, "");
    }*/
    }
    writer.flush();
    writer.close ();

    謝謝了  回復  更多評論
      
    # re: HTMLParser的使用
    2009-03-02 13:20 | 黃金礦工
    感覺效率有點低下,另外處理字符編碼的地方有點問題,取正文的時候js代碼去不干凈  回復  更多評論
      
    <2008年1月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

          生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
          我的作品:
          玩轉Axure RP  (2015年12月出版)
          

          Power Designer系統分析與建模實戰  (2015年7月出版)
          
         Struts2+Hibernate3+Spring2   (2010年5月出版)
         

    留言簿(263)

    隨筆分類

    隨筆檔案

    文章分類

    相冊

    關注blog

    積分與排名

    • 積分 - 2294288
    • 排名 - 3

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 精品国产成人亚洲午夜福利| 国产亚洲精久久久久久无码| 在线播放高清国语自产拍免费| 亚欧免费视频一区二区三区| 日本视频在线观看永久免费| 免费观看在线禁片| 午夜精品射精入后重之免费观看 | 亚洲AV日韩综合一区尤物| 亚洲日韩国产精品无码av| 亚洲午夜电影在线观看高清| 亚洲一区二区久久| jiz zz在亚洲| 国产精品亚洲专区无码唯爱网| 国产成人精品亚洲| 一级毛片**免费看试看20分钟| AAAAA级少妇高潮大片免费看| a在线免费观看视频| 日韩免费人妻AV无码专区蜜桃| 永久在线观看www免费视频| 在线观看的免费网站| 免费高清小黄站在线观看 | 无码国产精品一区二区免费3p| 99久久99久久免费精品小说| 免费三级毛片电影片| 啦啦啦手机完整免费高清观看| 全黄a免费一级毛片人人爱| 2048亚洲精品国产| 亚洲国产精品久久久久婷婷老年| 亚洲专区一路线二| 色天使亚洲综合一区二区| 国产精品无码永久免费888| a级毛片黄免费a级毛片| 亚洲免费中文字幕| 国产成人免费全部网站| 亚洲色中文字幕无码AV| 日韩亚洲Av人人夜夜澡人人爽| jiz zz在亚洲| 东北美女野外bbwbbw免费| 成人午夜免费福利视频| 国产一区视频在线免费观看| 亚洲精品午夜无码电影网|