<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)站導航:
     
    主站蜘蛛池模板: 在线看片免费人成视频福利| 国产日韩精品无码区免费专区国产 | 最近免费视频中文字幕大全| 无码人妻丰满熟妇区免费| 无码人妻一区二区三区免费手机| 亚洲人成电影网站国产精品| 亚洲国产精品碰碰| 久久精品亚洲乱码伦伦中文| 亚洲欧洲国产经精品香蕉网| 成人a毛片视频免费看| 久久成人永久免费播放| 一色屋成人免费精品网站| 亚洲午夜无码AV毛片久久| 亚洲Av熟妇高潮30p| 亚洲丰满熟女一区二区v| 亚洲日韩国产一区二区三区在线 | 成人无码区免费A∨直播| 一个人免费观看视频www| 欧洲亚洲国产清在高| 亚洲欧洲国产精品你懂的| 韩国亚洲伊人久久综合影院| 未满十八私人高清免费影院| 国产精品怡红院永久免费| 国产成人高清亚洲| 亚洲日韩精品无码AV海量| 99在线视频免费| 亚洲区日韩区无码区| 在线aⅴ亚洲中文字幕| 四虎影视久久久免费观看| 91九色精品国产免费| 精品久久久久久亚洲| 亚洲高清视频免费| 国产免费A∨在线播放| 免费观看的毛片手机视频| 亚洲精选在线观看| 亚洲免费一区二区| 国产免费av片在线无码免费看| 亚洲精品在线播放视频| 国产精品亚洲专区一区| 日韩免费a级毛片无码a∨| 免费又黄又爽又猛的毛片 |