heritrix爬虫使用.docx
- 文档编号:18545986
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:13
- 大小:630.71KB
heritrix爬虫使用.docx
《heritrix爬虫使用.docx》由会员分享,可在线阅读,更多相关《heritrix爬虫使用.docx(13页珍藏版)》请在冰点文库上搜索。
heritrix爬虫使用
目录
1.Heritrix爬虫介绍1
2.Heritrix下载、安装、配置1
2.1下载1
2.2安装1
2.3非开发环境下的配置2
2.4开发环境下的配置2
3.heritrix工作原理3
4.一个简单的抓取示例4
1.Heritrix爬虫介绍
Heritrix是一个开源、可扩展的web爬虫框架,它使用Java编写并且完全开源。
Heritrix最出色之处在于它的可扩展性,开发者可以扩展它的各个组件,来实现自己的抓取逻辑。
2.Heritrix下载、安装、配置
2.1下载
下载了一个1.14.4的版本。
2.2安装
解压在本地目录下,例C:
\heritrix。
2.3非开发环境下的配置
1>.将解压在C盘跟目录下的文件夹命名为heritrix.
2>.进入C:
\heritrix\conf,复制文件jmxremote.password.template到C:
\heritrix目录下,并把文件重命名为jmxremote.password。
然后记事本打开修改如下内容:
修改为:
MonitorRole@123456@->monitorRoleadmin
controlRole@123456@->controlRoleouyang
并设置文件jmxremote.password的属性为只读。
注:
@于@之间设置的是密码,后面是->用户角色用户名。
3>.进入c:
\heritrix\conf打开文件heritrix.properties,在heritrix.properties中配置了大量与Heritrix运行息息相关的参数,这些参数主要是配置了Heritrix运行时的一些默认工具类、WebUI的启动参数,以及Heritrix的日志格式等。
第一次运行heritrix,需要修改其中的几项key-value值:
heritrix.cmdline.admin=admin:
123456(用户名:
密码)
heritrix.cmdline.port=8080(heritrix服务器默认端口号8080)
4>.运行cmd,进入目录c:
\heritrix\bin
然后敲入命令:
heritrix--admin=admin:
123456
2.4开发环境下的配置
1>.新建一个工程:
Hertirex.
2>.先下载heritrix-1.14.4-src.zip和heritrix-1.14.4.zip。
解压heritrix-1.14.4.jar到\heritrix\heritrix-1.14.4。
解压得到的文件夹结构如图:
3>.把以上目录的所有文件拷贝到\heritrix-1.14.4\src\java文件夹下。
目的是将java文件夹配置成一个完整的工程目录。
4>.把\heritrix\lib文件夹拷贝到\heritrix-1.14.4\src\java文件夹下。
把lib下的jar包放入工程内部是为了便于管理。
5>.把\heritrix\webapps文件夹拷贝到\heritrix-1.14.4\src\java文件夹下,此时工程目录基本上完整了。
得到的效果如图:
6>.在Eclipse中新建一个JavaProject,选择从现有源代码建立,源代码的路径指向\heritrix-1.14.4\src\java。
命名为Heritrix,点击ok。
7>.这时在packageexplorer中应该会出现大量的编译错误标记。
原因是没有把对应的jar包导入项目。
在JavaBuildPath的Library选项卡中,把项目lib文件夹下的jar包全部加入BuildPath。
8>.用鼠标选中/Heritrix/org/archive/crawler/Heritrix.java,右键选择RunAsJavaApplication,Console应该是没有输出的。
原因是没有提供运行的参数(用户名/密码)。
一种方法是,修改项目根文件夹下的heritrix.properties文件,设置“heritrix.cmdline.admin=admin:
123456”。
正常运行时的输出如下:
9>.运行Heritrix,在浏览器中输入http:
//localhost:
8080/,用户名/密码为“admin/123456"
3.heritrix工作原理
深度遍历网站的资源,将这些资源抓取到本地,使用的方法就是分析网站每一个有效的URI,并提交Http请求,从而获得相应结果,生成本地文件及相应的日志信息等。
4.一个简单的抓取示例
1).通过运行cmd命令启动heritrix.
2).此时,heritrix的后台已经对服务器的8080端口进行了监听,只需要在浏览器中访问http:
//127.0.0.1:
8080,就可以打开heritrix的WebUI了。
3).输入在Heritrix.properties中配置的WebUI的用户名和密码,就可以进入Heritrix的WebUI主界面了。
进入主界面,说明heritrix已经启动成功了。
主界面显示了当前正在执行抓取任务的状态。
在这个WebUI的帮助下,我们就可以开始使用Heritrix来抓取网页了。
4).单击WebUI菜单栏上的”jobs”标签,就可以进入任务创建页面。
在创建任务页面中,有4种创建任务的方式,如上图所示,具体含义如下:
●Basedonexistingjob:
以一个已经有的抓取任务为模板,创建所有抓取属性和抓取其实URL的列表。
●Basedonarecovery:
在以前的某个任务中,可能设置过一些状态点,新的任务将从这个设置的状态点开始。
●Basedonaprofile:
专门为不同的任务设置了一些模板,新建的任务将按照模板来生成。
●Withdefaults:
这个最简单,表示按默认的配置来生成一个任务。
在Heritrix中,一个任务对应一个描述文件。
这个描述文件的默认的名称为order.xml。
每次创建一个新任务时,都相当于生成了一个order.xml的文件。
文件中详细记录了Heritrix在运行时需要的所有信息。
例如,它包括该用户所选择的Processor类、Frontier类、Fetcher类、抓取时线程的最大数量、连接超时的最大等待时间等信息。
5).单击Withdefaults链接,创建一个新的抓取任务。
在新建任务的名称上,填入“card”,表示该抓取任务将抓取点卡站点的信息。
在Description中随意填入字符,然后再在seeds框中,填入点卡的网址。
所谓seeds,指的是抓取任务的起始点。
每次的抓取,总是需要从一个起始点开始,在得到这个起始点网页上的信息后,分析出新的地址加入抓取队列中,然后循环抓取,重复这样的过程,直到所有链接都分析完毕。
另外,也可以同时输入多个种子,每个URL地址单独写在一行上。
当然,凭着当前的设置,还没法开始抓取网页,还需要对这个任务进行详细的设置。
6).设置抓取时的处理链。
单击“Modules”按钮,就进入了配置抓取时的处理链的页面。
从图中可以看到,需要配置的内容共有7项,其中CrawlScope和Frontier是两个最重要的组件。
★CrawlScope:
用于配置当前应该在什么范围内抓取网页。
比如,如果选择BroadScope,则表示当前抓取的范围不受限制,但如果选择了HostScope,则表示抓取的范围在当前的Host内。
本例选择BroadScope,即从开始,抓取任何可以抓取的信息。
★Frontier:
是一个URL的处理器,它将决定下一个被处理的URL是什么。
同时,它还会将经由处理器链所解析出来的URL加入到等待处理的队列中去。
除了这两个组件外,还有5个队列要配。
这五个队列根据先后的顺序,就依次组成了Heritrix的整个处理器链。
5个队列的含义分别如下:
1PreProcessor:
这个队列中,所有的处理器都是用来对抓取时的一些先决条件做判断的。
比如判断robot.txt的信息等,它是整个处理器链的入口。
2Fetcher:
从名称上看,它用于解析网络传输协议,比如解析DNS、HTTP或FTP等。
本例主要使用FetchDNS和FetchHTTP两个类。
3Extractor:
它主要用于解析当前获取到的服务器返回内容,这些内容通常是以字符串形式缓存的。
在这个队列中,包括了一系列的工具,如解析HTML、CSS等。
在解析完毕,取出页面中的URL后,将它们放入队列中,等待下次继续抓取。
本例中,使用两种Extractor,即ExtractorHTTP和ExtractorHTML。
4Writer:
主要是用于将所抓取到的信息写入磁盘。
通常写入磁盘时有两种形式,一种是采用压缩的方式写入,在这里被称为Arc方式,另一种则采用镜象方式写入。
当然处理起来,镜象方式要更为容易一些,因此,在本例中命名用镜象Mirror方式。
5PostProcessor:
在整个抓取解析过程结束后,进行一些扫尾的工作,比如将前面Extractor解析出来的URL有条件的加入到待处理队列中去。
7).设置运行时的参数。
在设置完处理链后,在页面顶部或底部都可以单击“Settings”链接,就进入了属性设置的页面。
在属性设置页面上有非常多的输入域,Heritrix在抓取网页时,这些域是用来对的各个组件的值进行预设。
由于页面上的内容非常多,使用者可能无法全部了解它们的作用。
所以Heritrix提供了一个辅助功能,来在最大程度上让使用者了解每个参数的含义。
可以看到,在每个属性的右侧都有一个小问号,当单击问号时,就会弹出一个Javascript的Alert提示框,上面介绍了当前属性的作用。
例如,在上图中单击“max-bytes-download”属性,通过Alert的提示可以知道,它表示的是抓取器最大下载的字节数,当下载字节数超过这个属性上所设定的值时,抓取就会自动停止。
另外,如果将这个值设为0,则表示没有限制。
事实上,当在第一次使用Heritrix时,所需要设置的参数并不多,以默认设置为主。
以下就来介绍一些必须要在第一次使用时就要配置好的参数。
1.max-toe-threads
该参数的含义很容易了解,它表示Heritrix在运行该抓取任务时,为任务分配多少个线程进行同步抓取。
该参数的默认值为100,而事实上根据笔者的经验,在机器配置和网络均很好的情况下,设置50个线程数就已经足够使用了。
2.HTTP-Header
在HTTP-Header这个属性域下面,包括两个属性值“user-agent”和“from”。
默认情况下,这两个属性的值是无法完成真实的HTTP协议的模拟的,所以,必须要将值改掉。
“PROJECT_URL_HERE”可以被替换成任何一个完整的URL地址。
“from”属性中不需要设置真实的E-mail地址,只需是格式正确的邮件地址就可以了。
当正确设置了上述的两个属性后,Heritrix就具备了运行的条件。
单击“Submit”链接,提交这个抓取任务。
8).运行时抓取任务。
(1).当单击“Submitjob”链接后,会看到图中最上方很清楚的显示了“Jobcreated”,这表示刚才所设置的抓取任务已经被成功的建立。
同时,在下面的“PendingJobs”一栏,可以清楚的看到刚刚被创建的Job,它的状态目前为“Pending”。
(2).下面启动这个任务。
回到“Console”界面上,可以看到,如图所示,刚刚创建的任务已经显示了出来,等待我们开始它。
(3).此时,单击面版中的“Start”链接,就会将此时处于“Pending”状态的抓取任务激活,令其开始抓取。
(4).刚才还处于“Start”状态的链接已经变为了Hold状态。
这表明,抓取任务已经被激活。
(5).此时,面版中出现了一条抓取状态栏,它清楚的显示了当前已经被抓取的链接数量,另外还有在队列中等待被抓取的链接数量,然后用一个百分比显示出来。
在绿红相间的长条左侧,是几个实时的运行状态,其中包括抓取的平均速度(KB/s)和每秒钟抓取的链接数(URIs/sec),另外的统计还包括抓取任务所消耗的时间和剩余的时间,不过这种剩余时间一般都不准,因为URI的数量总是在不断变化,每当分析一个网页,就会有新的URI加入队列中。
Load显示的是当前的负载,它显示了当前活跃的线程数量,同时,还统计了Heritrix内部的所有队列的平均长度。
至此,已经把Heritrix成功的运行起来,并且抓取了一定的内容。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- heritrix 爬虫 使用