Heritrix爬虫处理方案Word文档格式.docx
- 文档编号:5828342
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:17
- 大小:238.28KB
Heritrix爬虫处理方案Word文档格式.docx
《Heritrix爬虫处理方案Word文档格式.docx》由会员分享,可在线阅读,更多相关《Heritrix爬虫处理方案Word文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
管理Heritrix数据模型中的凭证,如抓取某些网站需要用户名和密码
9
org.archive.crawler.deciderules
Heritrix的规则包,如决定哪些URL可以抓取可以调度
10
org.archive.crawler.deciderules.recrawl
还待研究,应该是决定哪些URL需要重新抓取
11
org.archive.crawler.event
事件管理,如Heritrix的暂停、重启、停止等
12
org.archive.crawler.extractor
Heritrix的造血器,通过它抽取新的URL再次进行抓取
13
org.archive.crawler.fetcher
Heritrix的获取包,如获取HTTP、DNS、FTP数据
14
org.archive.crawler.filter
Heritrix的过滤器,如配合Rule过滤一些不要的URL
15
org.archive.crawler.framework
Heritrix的框架包,存放一些核心类,一般是父类,如Heritrix控制类CrawlController;
调度器类Frontier
16
org.archive.crawler.framework.exceptions
Heritrix框架异常包,通常这里的异常抛出会导致Heritrix的停止
17
org.archive.crawler.frontier
Heritrix的调度器,决定抓取哪个URL
18
org.archive.crawler.io
Heritrix的IO格式包,感觉取名不合理,这里只是定义一些格式,如统计数据的格式,错误日志的格式
19
org.archive.crawler.postprocessor
辅助处理器包,感觉取名也不合理,这里只是对处理URL前后进行一些处理,如URL重定向
20
org.archive.crawler.prefetch
Heritrix的预处理器包,如确定一个URL是否已经解析了DNS
21
org.archive.crawler.processor
Heritrix处理器
22
org.archive.crawler.processor.recrawl
23
org.archive.crawler.scope
Heritrix抓取范围管理,如种子
24
org.archive.crawler.selftest
管理Heritrix的Web工程self.war
25
org.archive.crawler.settings
管理Heritrix配置文件order.xml中的各项配置
26
org.archive.crawler.settings.refinements
管理Heritrix自己对数据格式的标准,如时间格式
27
org.archive.crawler.url
还没怎么接触到,待研究
28
org.archive.crawler.url.canonicalize
Heritrix的URL规范化,用于规范每一个URL
29
org.archive.crawler.util
Heritrix用于抓取的工具包,如BDB操作工具,IO操作工具
30
org.archive.crawler.writer
Heritrix的下载包,用于将抓取的URL内容写入硬盘
31
org.archive.extractor
还没接触到,待研究
32
org.archive.httpclient
Heritrix为结合httpclient量身打造的包,让自身更好的获取网页内容
33
org.archive.io
Heritrix的IO包,自己封装的一些IO操作类
34
org.archive.io.arc
针对arc格式的IO操作包
35
org.archive.io.warc
针对warc格式的IO操作包
36
Heritrix扩展了的包,主要扩展.URI类
37
.md5
Heritrix对URLMD5加密包,所用不多,待研究
38
.rsync
待研究
39
.s3
40
org.archive.queue
41
org.archive.uid
HeritrixID管理,主要针对URI
42
org.archive.util
整个Heritrix的工具类
43
org.archive.util.anvl
44
org.archive.util.bdbje
Heritrix对BDB的封装
45
org.archive.util.fingerprint
46
org.archive.util.iterator
Heritrix自身封装的迭代器
47
org.archive.util.ms
48
st.ata.util
扩展的其他包,待研究
2.2类说明
2.2.1org.archive.crawler包
类
CommandLineParser
Heritrix也可以通过CMD命令进行操作,该类用于解析CMD命令
Heritrix
Heritrix主类,可以通过该类启动Heritrix
SimpleHttpServer
HeritrixWeb服务器,可以通过Web管理Heritrix
WebappLifecycle
封装Servlet,如此才可以通过Web启动Heritrix,里面封装Heritrix对象
2.2.2org.archive.crawler.admin包
CrawlJob
Heritrix的核心类,代表着一个抓取任务,order.xml中大部分属性都围绕其配置。
CrawlJobErrorHandler
维护着一个抓取任务(CrawlJob)的错误日志,UI中显示的JOB错误就来自于它。
CrawlJobHandler
抓取任务处理器,Heritrix可以有多个抓取任务,都由它管理
InvalidJobFileException
抓取任务文件异常,意义不大
SeedRecord
记录种子的处理记录,如该种子重定向到哪个URL,在seeds.txt里面会有说明,该重定向值就来源于它
StaticsSummary
统计摘要类,所用不多
StaticsTracker
Heritrix核心类,统计跟踪器,贯穿整个Heritrix的运行,如统计抓取了多少URL。
2.2.3org.archive.crawler.admin.ui包
CookieUtils
Cookie工具类,主要用于访问Cookie
JobConfigureUtils
CrawlJob配置管理工具类,当你通过WebUi去配置一个CrawlJob时就会用到这个类
RootFilter
2.2.4org.archive.crawler.datamodel包
CandidateURI
Heritrix的核心类,代表着一个URL,贯穿整个抓取,与CrawlURI的区别是它还没有调度器(Frontier),只有通过了调度器的URL才可能去获取网页内容下载等
CandidateURITest
CandidateURI的测试类,比如可以用它获知如何创建CanditeURI
Checkpoint
Heritrix会定期备份它的数据,如日志、正在获取的URL内容,都是在底层定时运行,当Heritrix异常中断可以通过它来恢复,也类似于各个数据库的Checkpoint
CoreAttributeCostants
装载着Heritrix的基本属性变量名,一般是对应order.xml中的标签名
CrawlHost
Heritrix的核心类,代表着一个Host,里面主要包含域名、IP。
由于Heritrix可以控制抓取速度,如对一个Host的抓取速度,这个类就代表着那个Host
CrawlOrder
Heritrix的核心类,基本上对应着order.xml的各个属性值,除了各个组件的详细属性
CrawlServer
Heritrix的核心类,也对应着一个Host,里面装载着一个Host的各种Heritrix数据,如统计信息、爬虫协议
CrawlSubstats
抓取统计类,主要统计抓取url的个数、成功的个数、下载的字节数等等呢
CrawlURI
CandidateURI的子类,主要比CaidiateURI多了网页内容指纹、所属队列、组件处理器等
CredentialStore
凭证存储类,负责存储各种凭证,如登录
FetchStatusCodes
抓取状态,有不同的属性代表不同的抓取状态,如DNS获取成功:
S_DNS_SUCCESS
RobotsHonoringPolicy
爬虫协议,代表着不同的抓取策略
Robotstxt
爬虫协议,用于解析robots.txt
ServerCache
服务器缓存,主要缓存CrawlHost和CrawlServer
UriUniqFilter
接口,用于过滤已经抓取过的URL
2.2.5org.archive.crawler.datamodel.credential包
Credential
凭证类,代表着一个凭证,从order.xml配置文件中获取数据
CredentialAvatar
代表着一个具体的凭证
HtmlFormCredential
Credential的子类,代表着提交HTMLFORM表单时所需要的凭证
Rfc2617Credential
Credential的子类,代表着RFC2617HTTP认证凭证
2.2.6org.archive.crawler.deciderules包
AcceptDecideRule
URL规则,表示接受
ConfiguredDecideRule
URL规则,通过order.xml文件中的配置来决定是否拒绝(REJECT)或接受(ACCEPT)
DecideRule
URL规则的父类,审核一个URL是否接受(ACCEPT)、拒绝(REJECT)或放弃(PASS),通过decisionFor(Objectobject)方法,该方法由其子类实现
DecidingScope
验证一个URL是否在范围来决定是否接受、拒绝或放弃
MatchesRegExpDecideRule
通过配置的正则表达式来决定URL是否可接受、拒绝或放弃
NotMatchesRegExpDecideRule
MatchesRegExpDecideRule的子类,如果URL不匹配该正则则接受
PathologicalPathDecideRule
如果URL中相同目录名超过配置文件中的个数,则拒绝,如
PrerequisiteAcceptDecideRule
如果URL中有先决条件URL则接受,也就是该CandidateURI里的pathFromSeed属性里含有P,表示运行该URL之前有先要运行的URL
RejectDecideRule
URL规则,表示拒绝
TooManyHopsDecideRule
如果超过配置文件中的约点数(max-hops),则拒绝
2.2.7org.archive.crawler.event包
CrawlStatusListener
爬虫监听器,如监听爬虫是否在运行,是否暂停等
CrawlURIDispositionListener
URL监听器,如监听URL是否失败,是要要重新抓取等
2.2.8org.archive.crawler.extractor包
Extractor
所有抽取类的父类,用于从一个URL中抽取出新的URL
ExtractorCSS
从CSS中抽取出新的URL
ExtractorDOC
从DOC中抽取出新的URL
ExtractorHTML
从HTML中抽取出新的URL,Heritrix核心类
ExtractorHTTP
从HTTP中抽取出新的URL
ExtractorJS
从Javascript中抽取出新的URL
ExtractorPDF
从PDF中抽取出新的URL
ExtractorSWF
从SWF中抽取出新的URL
ExtractorXML
从XML中抽取出新的URL
HTTPContentDigest
网页内容文摘,实际上是通过MD5或SHA1算法将网页内容指纹化
Link
链接,代表抽取出来的URL
3Heritri扩展和定制
3.1向Heritrix添加自己的Extractor
Heritrix所提供的大众化的Extractor只能够将所有信息全部抓取下来。
在这种情况下,就无法控制Heritrix到底该抓取哪些内容,不该抓取哪些内容,进而造成镜像信息太复杂,不好建立索引。
Extractor是一个抽象类,用来添加自己的扩展功能。
3.2定制抓取URL(以为例)
以下使用一个实例,来讲解该如何定制和使用FrontierScheduler。
只要在FrontierScheduler类中的schedule方法中添加过滤代码即可,也可以自己写个类然后继承它,再重写这个方法。
下面以抓取新浪博客中博文为例:
过滤代码正则表达式:
(url.equals("
dns:
"
)||url.matches("
抓取结果如下图3.2所示:
图3.2抓取新浪博客
4Heritrix抓取规则
4.1抓取特定格式/特定要求的网页
这个要根据具体的网站,才能采取具体的措施。
这主要是根据网站编写的时候,它的出度的具体格式。
如果是类似<
ahref="
http:
//www.xxx.xxx.xx...."
..>
这样的可以直接指向某个具体的URL,那么添加到URI中的应该是这个完整的URL,如果是去掉了http:
//www等的前面的内容,而只是简单指向本网站下的某个网页,那么在加入到URI中的时候,要记得加上头使得它是一个完整的网页的URL。
4.2参数配置
进入运行参数设置页面后,有很多可以设定的参数,对于需要了解详情的设置,请点击设置框左边的“?
”号,可看到弹出的帮助信息。
Writers主要是用于将所抓取到的信息写入磁盘。
通常写入磁盘时有两种形式,一种是采用压缩的方式写入,在这里被称为Arc方式,另一种则采用镜象方式写入(保存成本地文件)。
当然处理起来,镜象方式要更为容易一些。
默认的是Arc方式点击旁边的Remove删除在下拉框中选择org.archive.crawler.writer.MirrorWriterProcessor单击Add添加。
如图所示:
还需要更改“HTTP-Header”项中的内容,更改其属性值user-agent和from其中user-agent中的PROJECT_URL_HERE对应自己的完整URL地址,(http:
//www.xxx.xxx)from中设置自己的合法email地址只需是格式正确的邮件地址就可以@VERSION@是设置heritrix的版本填上1.14.4user-agentMozilla/5.0(compatible;
heritrix/1.14.4+http:
//www.xxx.xxx)。
如下图:
4.3数据过滤
使用Heritrix来抓取网页必然会存在一些不需要的数据或者URL,需要用正则表达式来过滤到你不想要的东西,抓取和过滤的原理是一样的,就是具有共性的头和尾,把中间部分抓出来,正则表达式在抓取中应用比较多,也可以称之为一种规则,你抓取内容要按照一定的规则来抓取,无用的你还得按照一定的规则过滤。
4.4抓取范围
Heritrix能对初始种子网页进行内部链接、html、JS、CSS、SWF、DOC、PDF文件和相关图片的爬取。
也可以自己写扩展类按照既定的规则。
5Heritrix运行环境
操作系统
主要配置
Java环境
WindowsXP/Win7
CPU:
双核2GHZ以上
内存:
2G以上
存储:
100G以上
安装JDK环境1.6以上
linux
安装JDK环境1.6或者如果只是运行不做开发的话,安装相应位数的JRE包即可
6Heritrix抓取测试
6.1登陆并创建抓取目标
在MyEclipse中配置完成后运行Heritrix这个类启动服务,在Web页面输入localhost:
8080就会得到如图5.1的画面,输入admin、admin就跳到抓取页面控制台如图5.2所示,点击Jobs开始创建要抓取的URL任务。
图5.1登录界面图5.2控制台
6.2Modules配置
创建完抓取链接(图5.3所示)后,点击Modules在图5.4所示中选中org.archive.crawler.writer.MirrorWriterProcessor简单直观的镜像方式,配置完点击Settings进行配置。
图5.3创建抓取任务
图5.4设置Modules
6.3Settings设置
这里只需要设置user-agent和from,其中:
•“@VERSION@”字符串需要被替换成当前Heritrix的版本信息1.14.4。
•“PROJECT_URL_HERE”可以被替换成任何一个完整的URL地址。
•“from”属性中不需要设置真实的E-mail地址,只要是格式正确的邮件地址就可以了。
对于各项参数的解释,可以点击参数前的问号查看。
本次任务设置如图5.5所示。
图5.5设置Settings
6.4抓取任务
点击“Start”启动任务,刷新一下即可看到抓取进度以及相关参数。
同时可以暂停或终止抓取过程,如图5.6所示。
需要注意的是,进度条的百分比数量并不是准确的,这个百分比是实际上已经处理的链接数和总共分析出的链接数的比值。
随着抓取工作不断进行,这个百分比的数字也在不断变化。
图5.6启动任务
6.5抓取到的网页
在Heritrix工程目录下自动生成“jobs”文件夹,包含本次抓取任务。
抓取下来网页以镜像方式存放,也就是将URL地址按“/”进行切分,进而按切分出来的层次存储。
如图5.7所示。
图5.7抓取到的网页
7参考资料
[1]里可以学习到更多Heritrix的知识。
[2]下载源码。
[3]heritrix源码分析博客
[4]heritrix安装与配置:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Heritrix 爬虫 处理 方案