国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
HTMLPARSER學(xué)習(xí)小結(jié) - jackyrong - JavaEye技術(shù)網(wǎng)站

HTMLPARSER學(xué)習(xí)小結(jié)

文章分類:Java編程
htmlparser是個優(yōu)秀的網(wǎng)頁信息抓取工具,下面小結(jié)其一些基本的用法:

1 創(chuàng)建parser對象,有兩種方式
  Parser parser=new Parser(String html)
  傳入的html
  第2種為:
   //通過指定URLConnection對象創(chuàng)建Parser對象
  Parser parser = new Parser((HttpURLConnection)(new URL(url)).openConnection());
之后就可以進(jìn)行訪問parser中解析好的內(nèi)容了
2 解析時,有兩類方式,visitor方式和filter過濾方式,vistior方式需要遍歷每一個節(jié)點(diǎn),
而filter方式則是過濾。

3 visitor方式的例子;
   try{
//通過指定URLConnection對象創(chuàng)建Parser對象
Parser parser = new Parser((HttpURLConnection)(new URL(url)).openConnection());
//設(shè)置Parser對象的字符編碼,一般與網(wǎng)頁的字符編碼保持一致
        parser.setEncoding("GB2312");
        //創(chuàng)建LinkFindingVisitor對象
        LinkFindingVisitor lvisitor = new LinkFindingVisitor("http://news.qq.com/");
        //查找http://www.qq.com的鏈接個數(shù)
        parser.visitAllNodesWith(lvisitor);
        System.out.println("網(wǎng)頁中包含http://news.qq.com/的鏈接個數(shù):"+lvisitor.getCount());
}catch(Exception ex){
ex.printStackTrace();
}

      /** TextExtractingVisitor類的用法舉例 */
public static void testTextExtractingVisitor(String url){
try{
//通過指定URLConnection對象創(chuàng)建Parser對象
Parser parser = new Parser((HttpURLConnection)(new URL(url)).openConnection());
//設(shè)置Parser對象的字符編碼,一般與網(wǎng)頁的字符編碼保持一致
        parser.setEncoding("GB2312");
        //創(chuàng)建StringFindingVisitor對象
        TextExtractingVisitor visitor = new TextExtractingVisitor();
        //去除網(wǎng)頁中的所有標(biāo)簽,提出純文本內(nèi)容
        parser.visitAllNodesWith(visitor);
        System.out.println("網(wǎng)頁的純文本內(nèi)容為:"+visitor.getExtractedText());
}catch(Exception ex){
ex.printStackTrace();
}
}



4 還可以自定義nodevisitor來擴(kuò)展nodevisitor,重載其中的各方法:
  /** 自定義NodeVisitor子類,并重載抽象類NodeVisitor中的相關(guān)方法 */
public class MyNodeVisitor extends NodeVisitor {

/** 重載抽象類NodeVisitor的beginParsing方法,解析開始時調(diào)用此方法 */
public void beginParsing(){
System.out.println("開始解析HTML內(nèi)容......");
}

/** 重載抽象類NodeVisitor的finishedParsing方法,解析結(jié)束時調(diào)用此方法 */
public void finishedParsing(){
System.out.println("整個HTML內(nèi)容解析完畢!");
}

/** 重載抽象類NodeVisitor的visitTag方法,遇到開始標(biāo)簽時調(diào)用此方法 */
public void visitTag(Tag tag){
System.out.println("開始當(dāng)前標(biāo)簽: "+tag.getText());
}

/** 重載抽象類NodeVisitor的visitEndTag方法,遇到結(jié)束標(biāo)簽時調(diào)用此方法 */
public void visitEndTag(Tag tag){
System.out.println("結(jié)束當(dāng)前標(biāo)簽: "+tag.getText());
}

/** 重載抽象類NodeVisitor的visitStringNode方法,遇到文本節(jié)點(diǎn)時調(diào)用此方法 */
public void visitStringNode(Text string){
System.out.println("當(dāng)前文本節(jié)點(diǎn): "+string);
}

/** 重載抽象類NodeVisitor的visitRemarkNode方法,遇到注釋時調(diào)用此方法 */
public void visitRemarkNode(Remark remark){
System.out.println("當(dāng)前注釋: "+remark);
}

5 使用filter方式過濾
  基本用法:
   TagNameFilter類用法
   //通過指定URLConnection對象創(chuàng)建Parser對象
Parser parser = new Parser((HttpURLConnection)(new URL(url)).openConnection());
        //設(shè)置Parser對象的字符編碼,一般與網(wǎng)頁的字符編碼保持一致
parser.setEncoding("GB2312");
            //創(chuàng)建TagNameFilter實(shí)例
            NodeFilter filter = new TagNameFilter ("DIV");
            //篩選出所有DIV標(biāo)簽節(jié)點(diǎn)
            NodeList nodes = parser.extractAllNodesThatMatch(filter);
            if(nodes!=null) {
                for (int i = 0; i < nodes.size(); i++) {
                    Node textnode = (Node) nodes.elementAt(i);                   
                    System.out.println("當(dāng)前DIV:"+textnode.getText());
                }

   AndFilter類用法
    //通過指定URLConnection對象創(chuàng)建Parser對象
Parser parser = new Parser((HttpURLConnection)(new URL(url)).openConnection());
        //設(shè)置Parser對象的字符編碼,一般與網(wǎng)頁的字符編碼保持一致
parser.setEncoding("GB2312");
            //創(chuàng)建HasAttributeFilter實(shí)例
        NodeFilter filter1 = new HasAttributeFilter("id");
        //創(chuàng)建TagNameFilter實(shí)例
        NodeFilter innerFilter = new TagNameFilter ("DIV");
        //創(chuàng)建HasChildFilter實(shí)例
        NodeFilter filter2 = new HasChildFilter(innerFilter);
        //創(chuàng)建AndFilter實(shí)例
        NodeFilter filter = new AndFilter(filter1, filter2);
        //篩選出所有具有id屬性且擁有子節(jié)點(diǎn)的所有DIV節(jié)點(diǎn)
        NodeList nodes = parser.extractAllNodesThatMatch(filter);
            if(nodes!=null) {
                for (int i = 0; i < nodes.size(); i++) {
                    Node textnode = (Node) nodes.elementAt(i);                   
                    System.out.println("當(dāng)前DIV:"+textnode.getText());
                }
            }      
StringFilter類用法:
  //通過指定URLConnection對象創(chuàng)建Parser對象
Parser parser = new Parser((HttpURLConnection)(new URL(url)).openConnection());
        //設(shè)置Parser對象的字符編碼,一般與網(wǎng)頁的字符編碼保持一致
parser.setEncoding("GB2312");
//創(chuàng)建StringFilter實(shí)例
        NodeFilter filter = new StringFilter("陳水扁");
        //篩選出所有包含"陳水扁"字符串的所有文本節(jié)點(diǎn)
        NodeList nodes = parser.extractAllNodesThatMatch(filter);
            if(nodes!=null) {
                for (int i = 0; i < nodes.size(); i++) {
                    Node textnode = (Node) nodes.elementAt(i);                   
                    System.out.println("包含\"陳水扁\"字符串的文本節(jié)點(diǎn):"+textnode.getText());
                }
            }      
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
htmlparser使用指南AAA
Filter過濾器及其作用介紹
JS中的JSON對象
利用htmlparser抓取網(wǎng)頁內(nèi)容(一)
一個簡單的java網(wǎng)絡(luò)爬蟲(spider)
Parsing HTML
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服