爬虫程序开发指南(java)

上传人:kms****20 文档编号:40639693 上传时间:2018-05-26 格式:DOC 页数:16 大小:62KB
返回 下载 相关 举报
爬虫程序开发指南(java)_第1页
第1页 / 共16页
爬虫程序开发指南(java)_第2页
第2页 / 共16页
爬虫程序开发指南(java)_第3页
第3页 / 共16页
爬虫程序开发指南(java)_第4页
第4页 / 共16页
爬虫程序开发指南(java)_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《爬虫程序开发指南(java)》由会员分享,可在线阅读,更多相关《爬虫程序开发指南(java)(16页珍藏版)》请在金锄头文库上搜索。

1、sosoo spider 开发指南 Sosoo 1.0 网络爬虫程序-用户开发手册编写人:王建华(rimen/jerry)编写目的:基于 sosoo 定 制 web spider 程序的编程人员。目录一: 安装 sosoo. 2二:功能定制. 21基本功能参数的设置。. 22配置机器人对 url 的检查. 33:实现文件管理。. 44定制 html 文档下载规则。. 45设 置对下载后 http 文档的过滤处理. 56启用机器人运行期监控。. 57启用对 http 协议分析的监 控。. 5三:sosoo 描述. 6四:应用开发指南. 61Roboter 类,spider 程序的主类。. 62T

2、askList 接口,解决对处理任务的存储。. 73Http 客户 端实现。. 74实现网页存储或处理. 75实现运行期的监控. 8五程序例 子. 9六参考依赖. 10一: 安装 sosoo sosoo 提供的是一个 sosoo-core.jar 包,其中并没有提供可运行的程序入口。如果要使用可 以通过 test 中的 examples 进行体验。开发者可以基于在这上开发出基于 UI,j2ee 等 spider 程序把 sosoo-core 包加 入到你应用的 classpath 中。Sosoo 提供一个基于多线程的来代表一个机器人 com.sosoo.robot.spider. Robote

3、r。通过一个测试类public static void main(String args) throws ExceptionRoboter robby = new Roboter();robby.setStartURL(new URL(“http:/10.25.101.173:7001/pa18Web/framework/images/framev ork_04.gif“);robby.setMaxDepth(0); / 设置最大连接访问深度robby.setSleepTime(0);robby.setWalkToOtherHosts(true);robby.run(); / 启动这样就启动了

4、一个 spider 程序,sosoo 将根据你对 javaBean 参数的设置进行 对网络上 html的抓取.停止机器人.robot.stopRobot(); 二: 功能定制 Sosoo 利用回调的方式实现了 aop,用户可以通过进行功能 Bean 的实现加入程序在处理 http 连接时的动作。1 基本功能参数的设置。 就像上面例子上提到的 roboter 的原生类型参数(或 String) ,例如:startURL,maxDepth 等。设 置开始处理的 url【startURL】:必须参数,roboter 会根据这个地址开始在网络上进行 查找。robby.setStartURL(URL u

5、rl);设 置从开始路径能找的最大深度【maxDepth】:程序会判断当前处理的连接深度是否超 过最大连接深度,如果超过这个连接将忽略,当然你可以通过设置 depthIsEffect 来屏蔽这个功能。默认值为 1。robby.setMaxDepth(0);设 置处理文档的时间间隔【sleepTime】:当处理完一个 url 时,设置这个间隔时间处理下 一个 url。单位为 s,默认值为 60,推荐使用 5s。robby.setSleepTime(0);设 置 http 连接超时时间:在连接服务器时,可能由于网络或者本身服务的原因,可能会出现超时的情况,通过设置超时时间来限制对某个 url 连接

6、的最大时间,这样就可以 达到提供处理的速度,但是如果这个值设置太小,可能很多连接都回连接不到,建议使用 大于 30 的值,默认为 60s。robby.setUrlConnectTimeOut(30);停 止 robby 线程【stopIt】:你可以通过对 robby 对象进行操作来停止当前的线程。 robby.stopRobot();暂 停 robby 线程【sleep】:可以对当前运行的 robby 线程进行暂停。robby.setSleep(true);2 配置机器人对 url 的检查sosoo spider 会根据用户的设置对在收集 url 过程中过滤掉不符合条件的 url。过滤的顺序:

7、walkToOtherHostsallowWholeHost flexibleHostCheckallowWholeDomain用户提供 url 列表。设置 是否访问其他的主机【walkToOtherHosts】:如果你需要进行整个互联网的搜索,而 不现有你开始提供的 url 中的主机,把这个参数设置为 true。默认为 false。robby.setWalkToOtherHosts(true);设 置是否访问本主机【allowWholeHost】:如果你只想要对开始 url 代表的主机进行访问, 你可以通过设置这个参数进行过滤 url。robby.setAllowWholeHost(true

8、);设 置非 www 开始的主机【flexibleHostCheck】:当你提供的开始 url,不是以 www 开头, 你可以通过设置 flexibleHostCheck 参数来达到访问本主机的目的。robby.setFlexibleHostCheck(true);设 置是否访问本域【allowWholeDomain】:如果你只想要对开始 url 代表的域进行访问, 你可以通过设置下面这个参数进行过滤 url。robby.setAllowWholeDomain(true);设 置要访问的 url 列表【allowedURLs】:这是一个 Vector 类型的变量,用户可以把这些 url 放在配

9、置文件中,用户可以在运行时提供这个变 量。robby.setAllowedURLs(allowed);定制 url 检 查规则【URLCheck】:用户除了通过上面的规则进行 url 过滤,用户还可以通 过实现 urlCheck 接口来进行 url 检测。系统已经提供了 RegExpURLCheck 实现。支持对 properties 文件的支持。robby.setURLCheck(check);设 置是否要找网站跟目录下的/robot.txt 文件【ignoreRobotsTxt】:用户可以通过设置这个 值来忽略网站提供对 robot 的支持。默认 为 falserobby.setIgnor

10、eRobotsTxt(true);设置 url 可以重复访 问【visitMany】:系统提供了一个访问过的列表缓存,当 spider 程序 发现这个 url 已经访问过,他将不进行这个 url 的处理。可以通过这个参 数来定制可以重 复访问的 url 列表,这是一个 Vector 类型。robby.setVisitMany(visitMany);设 置 spider 客户端的【proxy】:spider 可以通过代理连接 internate,但是目前只支持匿名 的代理服务器。robby.setProxy(“10.16.111.5:80“);3: 实现文件管理。 Spider 程序下载 url

11、 对应的 html 文档的时候,系统提供一个回调接口 HttpDocManager。你 可以通过的持接口的 实现,把 spider 获得 html 数据进行存储,例如你可以把这些文件以 文本流存入数据,存入文件系统等。系统提供了 HttpDocToFile 实现,把 下载的文件存入 文件系统。你可以在启动 spider 程序的时候通过 robby.setDocManager(dm);进行注入管理对 象。4 定制 html 文档下载规则。当你对各种 html 文件的格式处理有要求的时候,例如你觉得下载 exe,rar 文件比较慢 的时候,你可以通过自己的需求定制下载规则。通过实现 HttpDow

12、nloadCheck接口可以设定下载的规则。DownloadRuleSet rules=new DownloadRuleSet(“downrules.properties“);robby.setDownloadRuleSet(rules);系 统已经提供了 DownloadRuleSet 实现,这个是想通过 classpath properties 来定义下载规 则.文件的内容:# the file must contain tow field,allowdeny and MIME Type/sub type# allow stand for if the doc match the cond

13、itions,will down the file# deny stand for if the doc match the conditions,will not down the file# size ,express the doc contect byte size is much than the value# cant hold out the = or 10000000deny image/gif 10000000当 然你可以自定义自己的实现,只要实现 HttpDownloadCheck 的 boolean downloadAllowed(Vector httpHeaders)

14、; 方法。注意:如果这个文档没有下载,这个文档中的连接将不能进行处理,所以一般不建议过滤掉 text/html.5 设置对下载后 http 文档的过滤处理下载文档后,用户可以对这个 doc 对象进行一系列的处理。Spider 提供了一个FilterChain 类。用户可以把自己过滤器加入 FilterChain 中。你可以实现 DocumentFilter 接口定制自己的功能,系统实现提供了一 个 LinkLocalizer 实现, 用户替换相对连接。FilterChain filters=new FilterChain();DocumentFilter filter=new LinkLoca

15、lizer();filters.add(filter);robby.setFilters(filters); 6 启用机器人运行期监控。 当启动 spider 程序后,程序利用回调接口提供给用户运行期的状态。例如你要要显示机器 人对应的处理过的任务,处理中的 任务,处理是的状态。通过实现 RobotCallback 接口来 实现,当然你也可以直接取 roboter 对象的属性来监控。系统提供 RobotMonitor 实现,用户打印在 cosole 上运行期的状态。RobotCallback monitor=new Monitor();robby.setWebRobotCallback(mon

16、itor);7 启用对 http 协议分析的监控。Spdier 循环处理缓存中未处理的 url,对于每个 url 的处理,系统提供一些监 控方法。当然你只要实现 HttpToolCallback 接口。系统提供了 SystemOutHttpToolCallback 实现。HttpToolCallback toolMonitor=new SystemOutHttpToolCallback();robby.setHttpToolCallback(toolMonitor);三:sosoo 描述sosoo 实际于 jobo 提供的核心算法。利用对访问的历史记录存储来替换 spider 的递给算法。在处理的 效率上有不错的体验,但是它也是牺牲存储为代价的。在程序启动是,系统将

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号