博客
关于我
Jspider的學習应用
阅读量:474 次
发布时间:2019-03-06

本文共 2402 字,大约阅读时间需要 8 分钟。

JSpider 学习应用:抓取与解析技术总结

最近,我在开发一个小项目,主要功能是从一个根网站开始抓取信息,同时检索网站的URL,然后依次检索URL抓取网站信息。为了实现这一目标,我选择使用JSpider框架,同时对其相关功能进行了深入研究。

JSpider 的核心功能分析

1. URL 提取方式

JSpider 提供了两种主要方式来提取URL:

  • 通过 HTML 解析:支持通过 HTTPClient 或 URLLConnetion 获取网页信息,利用 HTMlParser 解析 HTML 网页,提取URL。
  • 通过文件读取:使用 JSpider 抓取并输出到文件,读取文件并提取URL。

2. JSpider 整体架构

JSpider 的整体结构分为几个关键部分:

  • 抓取WEB资源:支持下载 HTML 网页,但目前不支持下载动态网页。
  • 解析内容:提取URL和内容。
  • 递归抓取:根据解析结果中的新URL继续抓取。

3. 事件转发流程

JSpider 提供了灵活的事件过滤链,规则可以自定义:

  • Rules:决定哪些资源被抓取,规则执行直到 Decision 出现,Decision 类型包括:不关心、接受、忽略、禁止。
  • Plugins:在事件发生后采取行动,如写报告文件、显示消息、保存资源到磁盘等。
  • Events filter:选择哪些事件由哪些 Plugins 处理。

4. 配置机制

JSpider 的配置分为三个级别:

  • 公共配置(common级别):如日志配置,位于 jspider/common 目录下。
  • 蜘蛛级别(generally级别):适用于所有站点。
  • 站点级配置(per-site级别):每个站点定制。

公共级别配置

  • 日志配置:支持 Log4j 和 JDK 1.4 logging,日志信息可转发到事件系统。
  • Log4j 配置:通过 log4j.xml 文件配置。
  • JDK 1.4 配置:通过 logging.properties 文件配置。

蜘蛛级别配置

  • 代理设置:支持代理,但验证未通过时返回 407 错误。
  • 线程池设置:包括 Spider 线程池和 Thinker 线程池,默认 1 对 5。

站点级配置

  • 规则定义:如 ForbiddenPathRule,不允许访问特定路径。
  • 资源限制:如 MaxResourcesPerSiteRule,限制每个站点接收的URL数量。

插件开发

插件是 JSpider 的灵魂,用于处理事件。JSpider 提供了几个默认插件类型:

  • Console:输出信息到控制台。
  • Velocity:通过模板生成自定义报告文件。
  • FileWriter:将信息写入文件系统。
  • StatusBasedFileWriter:根据 URL 状态生成对应文件(如 200.out、404.out 等)。
  • DiskWriter:将抓取到的文件写入磁盘。

用户可以根据需求开发自定义插件,扩展 JSpider 的功能。

Nutch 安装与使用

1. Nutch 在 Windows 环境下的安装

由于 Nutch 的脚本命令需要 Linux 环境,需要使用 Cygwin 模拟环境:

  • 安装 Cygwin。
  • 下载并解压 nutch-0.9.tar.gz,例如放在 G:/nutch-0.9 目录。
  • 运行命令:
    cd /cygdrive/g/nutch-0.9
    bin/nutch
  • 2. Nutch 的基本使用

    1.1抓取少量网站

  • 创建 url.txt 文件,写入要抓取的网站顶级 URL。
  • 编辑 crawl-urlfilter.txt,配置允许的域名。
  • 运行命令:
    bin/nutch crawl url.txt -dir crawled -depth 3 -threads 4 > crawl.log
  • 1.2抓取整个互联网

  • 创建数据库目录:
    mkdir db
    mkdir segments
  • 初始化数据库:
    bin/nutch admin db -create
  • 启用 DMOZ 数据:
    bin/nutch inject db -dmozfile content.rdf.u8 -subset 3000
  • 生成抓取列表并抓取:
    bin/nutch generate db segments
    s1=`ls -d segments/2* | tail -1`
    bin/nutch fetch $s1
    bin/nutch updatedb db $s1
  • 迭代分析并更新:
    bin/nutch analyze db 5
    bin/nutch generate db segments -topN 1000
    s2=`ls -d segments/2* | tail -1`
    bin/nutch fetch $s2
    bin/nutch updatedb db $s2
    bin/nutch analyze db 2
  • 索引并去重:
    bin/nutch index $s1
    bin/nutch index $s2
    bin/nutch dedup segments dedup.tmp
  • 1.3搜索实现

    将 Nutch 战斗部署到 Tomcat:

  • nutch-0.9.war 放在 Tomcat 的发布目录。
  • 修改 nutch-site.xml 配置文件,指向索引目录。
  • 修改 Tomcat 的 server.xml,确保支持 UTF-8 编码。
  • 2. Nutch 的二次开发

    通过扩展 Nutch 的核心功能,可以实现定制化的搜索引擎。推荐参考 Nutch 的官方文档和相关技术博客。

    总结

    JSpider 和 Nutch 是实现网络抓取与搜索引擎功能的强大工具。通过合理配置和插件开发,可以实现高度定制化的抓取任务。Nutch 的安装与使用需要注意环境配置,但通过详细的操作步骤可以顺利完成。

    转载地址:http://yimbz.baihongyu.com/

    你可能感兴趣的文章
    mysql Timestamp时间隔了8小时
    查看>>
    Mysql tinyint(1)与tinyint(4)的区别
    查看>>
    mysql union orderby 无效
    查看>>
    mysql v$session_Oracle 进程查看v$session
    查看>>
    mysql where中如何判断不为空
    查看>>
    MySQL Workbench 使用手册:从入门到精通
    查看>>
    mysql workbench6.3.5_MySQL Workbench
    查看>>
    MySQL Workbench安装教程以及菜单汉化
    查看>>
    MySQL Xtrabackup 安装、备份、恢复
    查看>>
    mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
    查看>>
    MySQL _ MySQL常用操作
    查看>>
    MySQL – 导出数据成csv
    查看>>
    MySQL —— 在CentOS9下安装MySQL
    查看>>
    MySQL —— 视图
    查看>>
    mysql 不区分大小写
    查看>>
    mysql 两列互转
    查看>>
    MySQL 中开启二进制日志(Binlog)
    查看>>
    MySQL 中文问题
    查看>>
    MySQL 中日志的面试题总结
    查看>>
    mysql 中的all,5分钟了解MySQL5.7中union all用法的黑科技
    查看>>