zoukankan      html  css  js  c++  java
  • hadoop使用(四)

    做一个网络爬虫的程序吧,根据客户的需求,要求把相关的内容爬取到本地

    最终选择的是apache nutch,到目前为止最新的版本是1.3

    1. Nutch是什么?

    Nutch是一个开源的网页抓取工具,主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行查询的一套工具。其底层使用了Hadoop来做分布式计算与存储,索引使用了Solr分布式索引框架来做,Solr是一个开源的全文索引框架,从Nutch 1.3开始,其集成了这个索引架构

    2. 在哪里要可以下载到最新的Nutch?

    在下面地址中可以下载到最新的Nutch 1.3二进制包和源代码

    http://mirror.bjtu.edu.cn/apache//nutch/

    3. 如何配置Nutch?

       3.1 对下载后的压缩包进行解压,然后cd $HOME/nutch-1.3/runtime/local

       3.2 配置bin/nutch这个文件的权限,使用chmod +x bin/nutch

       3.3 配置JAVA_HOME,使用export JAVA_HOME=$PATH

    4. 抓取前要做什么准备工作?

    4.1 配置http.agent.name这个属性,在conf目录下

    <prename="code"class="html"><property> 

        <name>http.agent.name</name> 

        <value>My Nutch Spider</value> 

    </property>

    4.2 建立一个地址目录,mkdir -p urls

       在这个目录中建立一个url文件,写上一些url,如

    http://www.apache.org

    4.3 然后运行如下命令

    bin/nutch crawl urls -dir mydir -depth 3 -topN 5 

    注意,这里是不带索引的,如果要对抓取的数据建立索引,运行如下命令

    -dir                       选项设置抓取结果存放目录

    -depth                 选项设置爬取的深度

    -threads             选项设置并行爬取的线程数

    -topN                  选项设置每个深度爬取的最大页数

    最后就可以查看mydir中的结果了

    一个典型的爬虫主要有如下阶段

    1. URL库初始化然后开始爬取。
    2. 爬虫读取没有访问过的URL,来确定它的工作范围。
    3. 获取URL的内容
    4. 解析内容,获取URL以及所需的数据。
    5. 存储有价值的数据。
    6. 规范化新抓取的URL。
    7. 过滤掉不需要爬去的URL。
    8. 把要抓取的URL更新到URL库中。
    9. 重复步骤2,直到抓取的网页深度完毕为止。

      附加一张中文图

    不知道为什么在Nutch-1.3中没了Nutch自带的搜索war文件,而且在Nutch-1.3中,抓取文件后,生成的目录只有crawldb,linkdb,segments

    查了一下官网Wiki,上面是把Nutch的索引映射到solr,用solr来提供搜索功能,详见官网Wiki说明:http://wiki.apache.org/nutch/RunningNutchAndSolr

     对比这两个,搜索同一关键字,发现Nutch搜索的展示结果有重复,而solr没有重复,还有solr可以在conf/schema.xml配置字段属 性,nutch好像改了这个配置文件,也没起效果,比如,我想让索引中存储content和termvector,可是搜索结果,并没有存储

    下面安装并且配置solr

    从官方下载

    http://www.apache.org/dyn/closer.cgi/lucene/solr/

    下载完成后解压缩

    到solr的example目录下,运行

    java -jar start.jar

    运行成功如图

    打开浏览器

    http://localhost:8983/solr/

    进入solradmin出现如下界面,运行成功

     

     

  • 相关阅读:
    01.Sencha ExtJS 6
    02.Sencha ExtJS 6
    关于Jquery的delegate绑定事件无效
    细说 Form (表单)
    Rquest Request[""];Request.Form[""];Request.QueryString[""]
    一文看懂web服务器、应用服务器、web容器、反向代理服务器区别与联系
    vs 调试不进入断点
    HttpWebRequest类
    C# 利用 Windows服务模板 创建、安装与卸载Windows服务
    如何搭建win10 asp开发环境安装iis10
  • 原文地址:https://www.cnblogs.com/skyme/p/2227507.html
Copyright © 2011-2022 走看看