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

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

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

    隨筆-204  評論-90  文章-8  trackbacks-0
      由于lucene2.0+heritrix一書示例用的網(wǎng)站(http://mobile.pconline.com.cn/,http: //mobile.163.com/)改版了,書上實例不能運行,我又找了一個http://mobile.younet.com/進行開發(fā)并成功實現(xiàn)示 例,希望感興趣的同學,近快實踐,如果此網(wǎng)站也改了就又得改extractor了,哈哈!
    search的Extractor代碼如下,(別和書上實例相同)供大家參考:附件里有完整代碼
    package com.luceneheritrixbook.extractor.younet;

    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Date;

    import org.htmlparser.Node;
    import org.htmlparser.NodeFilter;
    import org.htmlparser.Parser;
    import org.htmlparser.filters.AndFilter;
    import org.htmlparser.filters.HasAttributeFilter;
    import org.htmlparser.filters.HasChildFilter;
    import org.htmlparser.filters.TagNameFilter;
    import org.htmlparser.tags.ImageTag;
    import org.htmlparser.util.NodeIterator;
    import org.htmlparser.util.NodeList;

    import com.luceneheritrixbook.extractor.Extractor;
    import com.luceneheritrixbook.util.StringUtils;

    /**
     * <p></p>
     * 
    @author cnyqiao@hotmail.com
     * @date   Feb 6, 2009 
     
    */

    public class ExtractYounetMoblie extends Extractor {

        @Override
        
    public void extract() {
            BufferedWriter bw 
    = null;
            NodeFilter title_filter 
    = new AndFilter(new TagNameFilter("div"), new HasAttributeFilter("class""mo_tit"));
            NodeFilter attribute_filter 
    = new AndFilter(new TagNameFilter("p"), new HasChildFilter(new AndFilter(new TagNameFilter("span"), new HasAttributeFilter("class""gn_sp1 blue1"))));
            NodeFilter img_filter 
    = new AndFilter(new TagNameFilter("span"), new HasChildFilter(new TagNameFilter("img")));
            
            
    //提取標題信息
            try {
                
    //Parser根據(jù)過濾器返回所有滿足過濾條件的節(jié)點
                
    // 迭代逐漸查找
                NodeList nodeList=this.getParser().parse(title_filter);
                NodeIterator it 
    = nodeList.elements();
                StringBuffer title 
    = new StringBuffer();
                
    while (it.hasMoreNodes()) {
                    Node node 
    = (Node) it.nextNode();
                    String[] names 
    = node.toPlainTextString().split(" ");
                    
    for(int i = 0; i < names.length; i++)
                        title.append(names[i]).append(
    "-");
                    title.append(
    new Date().getTime());
                    
    //創(chuàng)建要生成的文件
                    bw = new BufferedWriter(new FileWriter(new File(this.getOutputPath() + title + ".txt")));
                    
    //獲取當前提取頁的完整URL地址
                    int startPos = this.getInuputFilePath().indexOf("mirror"+ 6;
                    String url_seg 
    = this.getInuputFilePath().substring(startPos);
                    url_seg 
    = url_seg.replaceAll("\\\\""/");
                    String url 
    = "http:/" + url_seg;
                    
    //寫入當前提取頁的完整URL地址
                    bw.write(url + NEWLINE);
                    bw.write(names[
    0+ NEWLINE);
                    bw.write(names[
    1+ NEWLINE);
                    
                }
                
    // 重置Parser
                this.getParser().reset();
                Parser attNameParser 
    = null;
                Parser attValueParser 
    = null;
                
    //Parser parser=new Parser("http://www.sina.com.cn");
                NodeFilter attributeName_filter = new AndFilter(new TagNameFilter("span"), new HasAttributeFilter("class""gn_sp1 blue1"));
                NodeFilter attributeValue_filter 
    = new AndFilter(new TagNameFilter("span"), new HasAttributeFilter("class""gn_sp2"));
                String attName 
    = "";
                String attValue 
    = "";
                
    // 迭代逐漸查找
                nodeList=this.getParser().parse(attribute_filter);
                it 
    = nodeList.elements();
                
    while (it.hasMoreNodes()) {                
                    Node node 
    = (Node) it.nextNode();
                    attNameParser 
    = new Parser();
                    attNameParser.setEncoding(
    "GB2312");
                    attNameParser.setInputHTML(node.toHtml());
                    NodeList attNameNodeList 
    = attNameParser.parse(attributeName_filter);
                    attName 
    = attNameNodeList.elements().nextNode().toPlainTextString();
                    
                    attValueParser 
    = new Parser();
                    attValueParser.setEncoding(
    "GB2312");
                    attValueParser.setInputHTML(node.toHtml());
                    NodeList attValueNodeList 
    = attValueParser.parse(attributeValue_filter);
                    attValue 
    = attValueNodeList.elements().nextNode().toPlainTextString();
                    bw.write(attName.trim() 
    + attValue.trim());
                    bw.newLine();
                }
                
    // 重置Parser
                this.getParser().reset();
                String imgUrl 
    = "";
                String fileType 
    ="";
                
    // 迭代逐漸查找
                nodeList=this.getParser().parse(img_filter);
                it 
    = nodeList.elements();
                
    while (it.hasMoreNodes()) {                
                    Node node 
    = (Node) it.nextNode();
                    
                    ImageTag imgNode 
    = (ImageTag)node.getChildren().elements().nextNode();
                    imgUrl 
    = imgNode.getAttribute("src");                
                    fileType 
    = imgUrl.trim().substring(imgUrl
                            .lastIndexOf(
    "."+ 1);
                    
    //生成新的圖片的文件名
                    String new_iamge_file = StringUtils.encodePassword(imgUrl, HASH_ALGORITHM) + "." + fileType;
                    
    //imgUrl = new HtmlPaserFilterTest().replace(new_iamge_file, "+", " ");
                    
    //利用miorr目錄下的圖片生成的新的圖片
                    this.copyImage(imgUrl, new_iamge_file);
                    bw.write(SEPARATOR 
    + NEWLINE);
                    bw.write(new_iamge_file 
    + NEWLINE);
                }
                
                
            } 
    catch(Exception e) {
                e.printStackTrace();
            } 
    finally {
                
    try{
                    
    if (bw != null)
                        bw.close();
                }
    catch(IOException e){
                    e.printStackTrace();
                }
            }
            
        }
    }
    運行書上的heritrix實例,并按書上的默認設置進行抓取如下URI:(請自己分析整理)
    http://mobile.younet.com/files/list_1.html
    http://mobile.younet.com/files/list_2.html
    http://mobile.younet.com/files/list_3.html

    posted on 2009-02-09 15:44 一凡 閱讀(2364) 評論(5)  編輯  收藏 所屬分類: 搜索

    評論:
    # re: lucene2.0+heritrix示例補充[未登錄] 2009-03-29 16:49 | lq

    很好,強烈支持!  回復  更多評論
      
    # re: lucene2.0+heritrix示例補充[未登錄] 2011-01-14 00:35 | aaaaa
    謝謝  回復  更多評論
      
    # re: lucene2.0+heritrix示例補充[未登錄] 2011-07-07 23:57 | 小龍
    啊  回復  更多評論
      
    # re: lucene2.0+heritrix示例補充[未登錄] 2011-07-08 00:01 | 小龍
    看到這篇博客就想看到救命恩人一樣,樓主,我請你務必要告訴我,import com.luceneheritrixbook.util.StringUtils;
    這到底是個什么包??!我的確買了一本《開發(fā)自己的搜索引擎》我按照書上代碼敲,結果找不到這個包的,我懷疑這個自己寫的,不是源代碼,請樓主務必要和我聯(lián)系,幫我解答,謝謝了,我郁悶?。?!我的郵箱a542107840@qq.com QQ:542107840,  回復  更多評論
      
    # re: lucene2.0+heritrix示例補充 2011-07-08 11:47 | willpower88
    我在javaeye的博客里放了源碼,你去下吧
    http://willpower88.iteye.com/admin/blogs/325722  回復  更多評論
      

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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 人妻在线日韩免费视频| 一个人看的免费视频www在线高清动漫| 亚洲日韩中文字幕| 亚洲香蕉久久一区二区| 亚洲AV色欲色欲WWW| 一级做a爰全过程免费视频毛片| 成人免费区一区二区三区| 亚洲免费闲人蜜桃| 亚洲男人的天堂一区二区| 亚洲高清免费视频| 亚洲乱码卡一卡二卡三| 亚洲AV无码一区二区一二区| 国产精品免费久久久久久久久| 一级毛片免费毛片一级毛片免费 | 99久久免费观看| 成人毛片手机版免费看| 国产免费一区二区三区VR| 永久亚洲成a人片777777| 亚洲精品午夜视频| 美女黄频a美女大全免费皮| 热99RE久久精品这里都是精品免费| 中国人xxxxx69免费视频| 免费人成视频在线观看视频| 久久亚洲国产精品五月天| 在线观看亚洲AV日韩A∨| 国产成人自产拍免费视频| 久久笫一福利免费导航| 亚洲精品无码永久在线观看| 亚洲黄色三级视频| 黄网站色视频免费观看45分钟| 99在线免费观看视频| 国产jizzjizz视频免费看| 老色鬼久久亚洲AV综合| 亚洲avav天堂av在线网毛片| 无码av免费网站| 日韩精品电影一区亚洲| 亚洲日本在线播放| 一个人晚上在线观看的免费视频| 希望影院高清免费观看视频| 国产亚洲精品xxx| 美女被免费网站在线视频免费|