由于lucene2.0+heritrix一书示例用的网站(http://mobile.pconline.com.cn/,http://mobile.163.com/)改版了,书上实例不能运行,我又找了一个http://mobile.younet.com/进行开发并成功实现示例,希望感兴趣的同学,近快实践,如果此网站也改了就又得改extractor了,哈哈!
search的Extractor代码如下,(别和书上实例相同)供大家参考:附件里有完整代码

来自:http://willpower88.iteye.com/blog/325722

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
...

lucene2.0+heritrix相关推荐

  1. Lucene-2.0学习文档

    Lucene是apache组织的一个用java实现全文搜索引擎的开源项目. 其功能非常的强大,api也很简单.总得来说用Lucene来进行建立 和搜索和操作数据库是差不多的(有点像),Document ...

  2. 【java毕业设计】基于java+Lucene+Tomcat的搜索引擎设计与实现(毕业论文+程序源码)——搜索引擎

    基于java+Lucene+Tomcat的搜索引擎设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Lucene+Tomcat的搜索引擎设计与实现,文章末尾附有本毕业设计的论文和源 ...

  3. 【毕业设计】论文你要用的参考文献这里总结了一部分

    论文你要用的参考文献这里总结了一部分 记得: 点赞!!!! 收藏!!!! 评论!!!! [1] 杨学瑜,王志军,刘同利编著.JSP入门与提高[M]. 北京: 清华大学出版社.2002. [2] 林上杰 ...

  4. 基于java的搜索引擎系统设计与实现(项目报告+开题报告+答辩PPT+源代码+数据库+部署视频)

    项目报告 基于Java的搜索引擎的设计与实现 我们处在一个大数据的时代,伴随着网络信息资源的庞大,人们越来越多地注重怎样才能快速有效地从海量的网络信息中,检索出自己需要的.潜在的.有价值的信息,从而可 ...

  5. Lucene6.6.0 案例与学习路线

    之前在学习Lucene这个全文检索工具,为项目搜索引擎的开发打下基础.在这里先分享一下关于Lucene的学习心得. 核心的学习流程是:索引文件格式--索引创建过程--检索流程. 1.首先建议参看这篇精 ...

  6. heritrix mysql_Heritrix使用小结

    1.Heritrix 简介 Heritrix是一个专门为互联网上的网页进行存档而开发的网页检索器.它使用Java编写并且完全开源.它主要的用户界面可以通过一个web流量器来访问并通过它来控制检索器的行 ...

  7. 基于Heritrix的特定主题的网络爬虫配置与实现

    建议在了解了一定网络爬虫的基本原理和Heritrix的架构知识后进行配置和扩展. 摘要 随着网络时代的日新月异,人们对搜索引擎,网页的内容,大数据处理等问题有了更多的要求.如何从海量的互联网信息中选取 ...

  8. heritrix 基本介绍

    Heritrix使用小结 1.   Heritrix 简介 Heritrix是一个专门为互联网上的网页进行存档而开发的网页检索器.它使用Java编写并且完全开源.它主要的用户界面可以通过一个web流量 ...

  9. Lucene 2.0.0下载安装及测试

    下载链接:http://apache.mirror.phpchina.com/lucene/java/archive/ 以选择lucene-2.0.0.zip下载为例. [安装] 1.在本地磁盘解压缩 ...

最新文章

  1. 有向图强连通分量tarjan算法
  2. 5g与edge ai_使用OpenVINO部署AI Edge应用
  3. java加载sql2016_SQl Server 2016 with R.
  4. php垃圾回收算法分代,PHP的垃圾回收机制代码实例讲解
  5. 完全卸载Oracle11
  6. linux Centos系统下mysql主从配置
  7. URLencode 转义符
  8. 软件页面安全性测试,软件Web安全性测试—SQL注入
  9. 把Spring boot jar作为Windows服务运行
  10. WS2811B驱动使用及使用说明应用
  11. windows cmd命令行查看结束进程
  12. Verifying an Alien Dictionary
  13. android的补间动画一共包含,Android的四种补间动画
  14. layui layer btn
  15. Makefile中echo和@echo、和的区别
  16. 【educoder 机器学习】决策树
  17. 盘古开源解析:数据防泄漏对于数据安全的重要性
  18. firefox快捷键切换窗口功能
  19. Android TextView重写onMeasure和onDraw显示无拉伸图片(含实现代码链接)
  20. 梦幻柔焦(奥顿效果)

热门文章

  1. 笔记本系统恢复连载之十:系统恢复并不难
  2. c++中的Debug版本和Release版本的区别
  3. 问题三十六:ray tracing中的Inverse Mapping(5)——圆锥面Inverse Mapping
  4. 推荐系统-Task03离线物料系统的构建
  5. 如何选择好的BI系统工具
  6. 大数据分析的方法有哪些
  7. 大数据技术的理解误区
  8. php 复制一张图片,PHP 生成一张图片的两种方法
  9. 好用的import: Vite的Glob 导入
  10. php 页面上显示xls文档,phpExcel输出xls文档显示乱码的解决方法