<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一書示例用的網站(http://mobile.pconline.com.cn/,http: //mobile.163.com/)改版了,書上實例不能運行,我又找了一個http://mobile.younet.com/進行開發并成功實現示 例,希望感興趣的同學,近快實踐,如果此網站也改了就又得改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根據過濾器返回所有滿足過濾條件的節點
                
    // 迭代逐漸查找
                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());
                    
    //創建要生成的文件
                    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 一凡 閱讀(2368) 評論(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;
    這到底是個什么包?。∥业拇_買了一本《開發自己的搜索引擎》我按照書上代碼敲,結果找不到這個包的,我懷疑這個自己寫的,不是源代碼,請樓主務必要和我聯系,幫我解答,謝謝了,我郁悶?。?!我的郵箱a542107840@qq.com QQ:542107840,  回復  更多評論
      
    # re: lucene2.0+heritrix示例補充 2011-07-08 11:47 | willpower88
    我在javaeye的博客里放了源碼,你去下吧
    http://willpower88.iteye.com/admin/blogs/325722  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲欧洲无码AV电影在线观看| 国产成人人综合亚洲欧美丁香花| 亚洲AV日韩精品一区二区三区| 国产亚洲自拍一区| 久久精品a一国产成人免费网站 | 欧美好看的免费电影在线观看 | 国产成人麻豆亚洲综合无码精品| 操美女视频免费网站| 午夜视频免费在线观看| 国产黄在线观看免费观看不卡| 亚洲成熟丰满熟妇高潮XXXXX| 亚洲国产一区在线观看| 亚洲精品免费视频| 国产精一品亚洲二区在线播放| 亚洲国产成人乱码精品女人久久久不卡 | 三年片在线观看免费| 四虎永久在线精品免费一区二区| 97久久国产亚洲精品超碰热| 亚洲明星合成图综合区在线| 亚洲成人精品久久| 久久久久亚洲AV片无码| 国产成人精品日本亚洲网站| 亚洲国产另类久久久精品| 久久久久亚洲AV无码专区网站| 免费一级e一片在线播放| 又粗又大又硬又爽的免费视频| 国产在线观看www鲁啊鲁免费| 免费看又爽又黄禁片视频1000| 18禁无遮挡无码网站免费| 国产卡一卡二卡三免费入口 | 亚洲美免无码中文字幕在线| 亚洲AV日韩精品久久久久久| 久久精品视频亚洲| 亚洲AV日韩精品久久久久久| 老色鬼久久亚洲AV综合| 亚洲精彩视频在线观看| 亚洲国产午夜电影在线入口| 国产AV旡码专区亚洲AV苍井空 | 成人午夜18免费看| 日本无卡码免费一区二区三区| 日本免费无遮挡吸乳视频电影|