没有合适的资源?快使用搜索试试~ 我知道了~
Heritrix源码分析
需积分: 4 62 下载量 149 浏览量
2010-04-15
17:08:10
上传
评论
收藏 494KB DOC 举报
温馨提示
试读
38页
Heritrix的文件结构分析 各个类说明 配置文件order_xml介绍....
资源推荐
资源详情
资源评论
Heritrix
源码分析 ( 一 ) 包介绍
之前说过要分享下我的爬虫经验,但一直找不到突破口,现在才感觉写点东西
真的很难,所以大家真的要感谢那些无私的前辈们,在网上留下的一篇篇可以
指点迷津的文章。
想了很久,还是先从 的包开始说起,然后再说类,最后讲下如何加工
,也就是将其打造成自己想要的爬虫,这里补充下,我用的版本是
同时欢迎加入我建的 爬虫群一起讨论学习
序
号
包名 说明
封装了 的
用于 网页
内容
封装了 的
用于 网页
内容这里主要处理
封装了 的
用于 网页
内容还待研究
!"
程序运行的入口包
如 运行可以直接抓
取
!"#
的管理包比如
"$% 表示一个抓取任务
&% "$%# 管理
$'(以及日志统计等
) !"#*
服务于 +, 管理界面如 $% 参
数的设置
!"##
的数据模型包如在
中代表一个 +-. 的
##+-,
!"###
管理 数据模型中的
凭证如抓取某些网站需要用
户名和密码
/ !"##*
的规则包如决定哪
些 +-. 可以抓取可以调度
!"##*"
还待研究应该是决定哪些
+-. 需要重新抓取
!"!
事件管理如 的暂
停、重启、停止等
!"
的造血器通过它抽
取新的 +-. 再次进行抓取
!"0
的获取包如获取
112、345、12 数据
!"6
的过滤器如配合
-* 过滤一些不要的 +-.
!"0"
的框架包存放一些
核心类一般是父类如
控制类
" 7调度器类
)
!"0"
框架异常包通常这
里的异常抛出会导致
的停止
!"0
的调度器决定抓取
哪个 +-.
!"
的 ,' 格式包感觉取
名不合理这里只是定义一些
格式如统计数据的格式错误
日志的格式
/ !"
辅助处理器包感觉取名也不
合理这里只是对处理 +-. 前
后进行一些处理如 +-. 重定
向
!"0
的预处理器包如确
定一个 +-. 是否已经解析了
345
!"
还没接触到待研究
!""
还没接触到待研究
!"
抓取范围管理如种
子
!"0
管理 的 8% 工程
0"
!"
管理 配置文件
# 中的各项配置
)
!"6
管理 自己对数据格
式的标准如时间格式
!"*
还没怎么接触到待研究
!"*9
的 +-. 规范化用于
规范每一个 +-.
/ !"*
用于抓取的工具包
如 (3( 操作工具,' 操作工
具
!""
的下载包用于将抓
取的 +-. 内容写入硬盘
!
还没接触到待研究
!
为结合
量身打造的包让自身更好的
获取网页内容
!
的 ,' 包自己封装的
一些 ,' 操作类
!
针对 格式的 ,' 操作包
!"
针对 " 格式的 ,' 操作包
) !
扩展了 &! 的
包主要扩展 &!+-,
类
!#
对 +-.:3 加密
包所用不多待研究
!;
还没接触到待研究
/ !
还没接触到待研究
!<**
还没接触到待研究
!*#
,3 管理主要针对
+-,
!*
整个 的工具类
!*!
还没接触到待研究
!*%#%&
对 (3( 的封装
!*6
还没接触到待研究
) !*
自身封装的迭代器
!*
还没接触到待研究
*
扩展的其他包待研究
自己的包有 个之多还有它导入的第三方包也有 多个可见其复
杂性
Heritrix
源码分析 ( 二 ) 配置文件
order.xml
介绍
# 是整个 的核心里面的每个一个配置都关系到 的
运行情况没读源码之前我只能从有限的渠道去获知这些配置的运用读完之后
才知道 竟然有如此灵活的运用如可以控制抓取速度可以优化电脑性
能可以在某一次的抓取上继续抓取当然整个 # 里我也没有全部掌握
只知道大部分配置的作用希望大家指点改正以及补充谢谢!
=>=?>代表着该抓取 $'( 的元素相当于 的
@ 代码
<meta>
<name>;</name>=ABB 抓取
$'( 的名字由用户输入用来区分不同的抓取 $'( 没有默认值 B
B>
<description>;</description>=ABB 抓
取 $'( 的描述由用户输入用来描述该抓取 $'( 没有默认值BB>
<operator>C#</operator>=ABB 抓取
$'( 的操作者由用户输入 没有默认值 BB>
<organization></organization>=ABB 抓取
$'( 的操作者所属组织由用户输入 没有默认值可以为空 BB>
) <audience></audience>=ABB 抓取
$'( 的用户或客户由用户输入 没有默认值可以为空 BB>
<date>/)</date>=ABB提交该
抓取 $'( 的时间由系统生成 BB>
@ 代码
</meta>
=>=?>跟抓取有关的所有参数由于内容较多并且
也已将他们分成不同模块,所以这里我也将他们拆分来说明
@ 代码
<controller>
<stringDEB#;E></string>=AB
B 的顶级目录 BB>
<stringDE#BE></string>=ABB# 所在目
录单个 实例的目录 BB>
<stringDEBE></string>=ABB用于保存
的日志文件可以是绝对路径也可以是相对路径相对路径是相
对于 #BBB>
<stringDEBE></
string>=ABB用于保存 F定点备份G文件的目录可以是绝
对路径也可以是相对路径相对路径是相对于 #BBB>
) <stringDEBE></string>=ABB用于保存
"B 文件的目录可以是绝对路径也可以是相对路径相对路
径是相对于 #BBB>
<stringDEBE></string>=ABB用于
保存网页内容临时文件的目录可以是绝对路径也可以是相对路径相对
路径是相对于 #BBB>
<longDEB%;B#"#E></long>=ABB最大
下载字节数,当下载字节超出该值爬虫将停止下载。如果该值为 则表
示没有限制BB>
/ <longDEB#*B#"#E></long>=ABB
最大文档下载数,当下载文档超出该值时爬虫将停止下载。如果该值为
则表示没有限制BB>
<longDEBBE></long>=ABB最大时间抓取
F秒G如果抓取时间超过该值,则爬虫将停止抓取。如果该值为 则表示
没有限制BB>
<integerDEBB#E></integer>=ABB
最大线程数用于同时处理多个 +-,BB>
<integerDE#B*B%*HB%;E>/)</
integer>=ABB每一个线程的输出缓冲区大小也就是在内存里存放多
大的字节数才写入到文件中BB>
<integerDE#BB%*HB%;E>))</
integer>=ABB每一个线程的输入缓冲区大小也就是在内存里存放多
大的字节数才写入到文件中BB>
<integerDE%#%BBE></integer>=ABB
分配给 3(( 缓存堆的百分比默认为 则表示没有其他要求F通常 (3(
是需要 )I或者是最大值GBB>
<newObjectDEEDE!"#
#*3#5E>=ABB抓取范围,构造 "5等下
拆分来说明BB>
) </newObject>
<mapDEB#E>=ABB112 协议,当处理爬虫
1212 协议时需要构造等下拆分说明BB>
</map>
/ <newObjectDE%BB;E
DE!"##-%2;E>=A
BB-% 协议控制等下拆分来说明 BB>
</newObject>
<newObjectDE0EDE!"0
(#%E>=ABB调度器等下拆分来说明BB>
</newObject>
剩余37页未读,继续阅读
资源评论
宝爷~
- 粉丝: 59
- 资源: 31
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功