网站首页 > java教程 正文
今日给大家分享的是使用java语言开发的一款开源的爬虫工具----Heritrix。
大家好,我是奋斗的小强001,今天这期内容来推荐一款使用java开发的一款开源爬虫工具(Heritrix),希望能给你带来帮助。
简介
Heritrix 是一个由 java 开发的、开源的网络爬虫,用户可以使用它来从网上抓取想要的资源。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取逻辑。是一款SourceForge上的开源产品。
工作原理和工作流程
heritrix做爬虫抓取工作主要由两个核心模块儿来完成,一个是core classes核心类,另一个是pluggable modules插件模块儿。
其核心类是整个爬虫开发包的核心,可以在此基础上进行自定义的配置,但是却不能将核心类进行覆盖,而相反的是插件模块可以直接取代,插件模块儿相当于插拔式的组件,也可以使用自己实现的逻辑来替换掉插件模块。这样能够根据自己的业务需求更好地定制爬虫抓取需求。
整个heritrix技术的工作原理以及工作流程是由CrawlController下载控制器来决定的,它是整个爬虫作业的起步者,由它来操控一次爬虫抓取的开始和结束工作,然后边界控制器Frontier负责采集收集url,下载控制器负责从边界控制器中拿到相应的url交给相应的线程池进行处理,线程池中每一个线程负责处理一次url,最后交给Processor chains处理链完成结果的整理与处理。
由于heritrix的url抓取工作是由多线程来执行的,每一个线程对应一次url,完成一次相应的处理器链执行一遍。因此,整个抓取工作过程中,最重要的就是这个处理器链,下面我们看下处理器链是如何进行对于url处理的。
首先是预取链儿,顾名思义预取链就是预先对url处理之前做一些先决条件的准备工作。
提取链就是将url对应的网页上的全部信息下载下来进行整理,然后编写相应的请求响应内容。
抽取链:完成上一步的提取内容工作之后,抽取链主要负责抽取页面上的a标签儿,然后抽取相应的其它的url。
写链主要是对所有的结果进行整理,然后进行存储。
提交链:就是将url抓紧工作做最后的收尾处理,然后将收集到的页面上的其他的url,只要是在任务范围内的url提交给Frontier,让它做其它的抓取工作。
四、heritrix3安装与下载指导教程
1)下载说明
heritrix3.x版本下载方式还是有很多种的,下面我们为大家推荐常用的几种下载方式:
1、首先我们推荐heritrix官网直接下载最新版本,因为官网提供提供的版本是最权威和版本最新的,也没有什么bug,都是经过官方测试过的,因此是我们首推的下载渠道,但是官网地址在国外,有时需要翻墙访问。
2、其次就是我们可以直接在GitHub上面下载,因为GitHub是一个源码下载的权威网站,下载完之后,直接使用开发工具直接编译就可以了,不过GitHub上面优先推荐release版本儿。GitHub仓库地址:https://github.com/internetarchive/heritrix3
2)环境说明
heritrix对环境依赖是有版本要求的,因此我们需要在环境配置这一块儿做一下说明,本篇文章中介绍的以及下面应用的都是基于heritrix3.2版本的,该版本儿依赖的Java环境JDK是1.7的,目前来讲3.2版本貌似还不支持jdk1.8,,如果以后支持了,我们也会在做详细的说明和备注。
五、Linux系统上面配置环境变量
按照上图中截图中的步骤指示,首先需要配置JDK的环境变量,一般学爬虫的同学对Java应该已经很熟悉了,Java_home的环境变量按照上图的步骤直接配置即可,我们也不会在做作赘述了。
第三,heritrix启动和执行都需要权限才能够正常启动,因此需要按照上图中的命令配置一下执行权限。
第三,heritrix启动和执行都需要权限才能够正常启动,因此需要按照上图中的命令配置一下执行权限。
六、启动与运行
由于我们的下载安装与环境变量配置操作都是在Linux系统上完成的,因此再启动heritrix的时候,也是需要以命令行的方式进行启动,下图是我们的启动命令方式以及控制台的细信息,heritrix登录时的默认的登录名和密码都是admin。
上面的步骤操作完成以后,说明heritrix已经正常启动了,我们就可以在浏览器进行访问heritrix的web界面,默认访问地址是:localhost:8443,这是web界面的访问地址,需要注意的是浏览器请求方式必须是HTTPS访问。
今天的内容就分享到这里啦,欢迎您的点赞和关注!谢谢!
- 上一篇: 关于Java爬虫工程师(初级)应该会的技术与知识
- 下一篇: 网络爬虫干货总结,这次比较全面!
猜你喜欢
- 2024-09-09 Java 爬虫遇上数据异步加载,试试这两种办法
- 2024-09-09 实战Java爬虫课程-猿天地(java爬虫入门教程)
- 2024-09-09 如何编写一个Python网络爬虫?点进来,我教你!
- 2024-09-09 Java编写爬虫抓取今日头条内容(java抓取今日头条数据)
- 2024-09-09 一款分布式爬虫管理平台,支持多种语言和框架
- 2024-09-09 编写Java网络爬虫(java 写爬虫)
- 2024-09-09 三个Python爬虫版本,带你轻松入门爬虫!
- 2024-09-09 App 爬虫必备技能:三步完成 Android 逆向
- 2024-09-09 Python 3 学习笔记:爬虫基础入门(python爬虫:入门+进阶)
- 2024-09-09 来来来!带你了解Python爬虫的方方面面!
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)