<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實例,并按書上的默認設(shè)置進行抓取如下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ā)自己的搜索引擎》我按照書上代碼敲,結(jié)果找不到這個包的,我懷疑這個自己寫的,不是源代碼,請樓主務必要和我聯(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)站導航:
     
    主站蜘蛛池模板: 91高清免费国产自产拍2021| 成人毛片免费观看视频在线| 亚洲大尺码专区影院| 在线A级毛片无码免费真人| 免费国产va视频永久在线观看| 中文字幕亚洲日本岛国片| 在线观看免费视频资源| 人人狠狠综合久久亚洲| 亚洲av永久无码制服河南实里| 亚洲免费福利在线视频| 特级一级毛片免费看| 亚洲大片在线观看| 国产免费人成视频在线观看| 国产精成人品日日拍夜夜免费| 亚洲欧美成人av在线观看| 亚洲色欲色欲www在线丝| 97在线线免费观看视频在线观看 | 日本精品久久久久久久久免费| 亚洲国产精品无码久久一区二区 | 亚洲av日韩综合一区在线观看| 好吊妞998视频免费观看在线| 成人精品一区二区三区不卡免费看| 亚洲综合国产成人丁香五月激情| 亚洲午夜国产精品无码老牛影视| 日韩毛片免费无码无毒视频观看| 高清永久免费观看| 亚洲AV成人一区二区三区观看 | 国产精品二区三区免费播放心| 国产99视频精品免费专区| 香港一级毛片免费看| 亚洲啪啪免费视频| 亚洲AV永久无码区成人网站| 免费在线观看理论片| 成熟女人特级毛片www免费| 99热这里只有精品6免费| eeuss影院免费92242部| 亚洲欧美成aⅴ人在线观看| 亚洲成在人线中文字幕| 久久精品亚洲综合专区| 自拍偷自拍亚洲精品被多人伦好爽| 免费无遮挡无码视频网站|