2组软件设计说明书1

2组软件设计说明书1

ID:25615679

大小:59.37 KB

页数:4页

时间:2018-11-21

2组软件设计说明书1_第1页
2组软件设计说明书1_第2页
2组软件设计说明书1_第3页
2组软件设计说明书1_第4页
资源描述:

《2组软件设计说明书1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、面向社交网络的爬虫实现设计报告单位:第2组时间:2011-12-11项目名称面向社交网络的爬虫实现撰写人肖哲锋11069067成员1于洋11060101成员2俞翔Xs10062003成员3刘建胜11050059成员4余庆丰11060102软件设计说明书1引言1.1编写目的本设计说明书包括概要设计与详细设计说明,为下步编码作准备。1.2背景说明:a.编写面向社交网络的爬虫实现,主要是面向Facebook;b.主要是基于多线程,时间充裕的情况下编写面向分布式的爬虫。1.3参考资料1、Catanese,S.,Meo,P.D.,Ferrara,E.,Fiumara,G.,andProvetti

2、,A.CrawlingFacebookforSocialNetworkAnalysisPurposes.WISM2011.2、Catanese,S.,Meo,P.D.,Ferrara,E.,andFiumara,G.AnalyzingtheFacebookFriendshipGraph.InProceedingsofCoRR.2011.3、http://code.google.com/p/crawler4j/2总体设计2.1总体思路以开源软件crawler4(http://code.google.com/p/crawler4j/)为基础,开发面向Facebook的爬虫程序。开源软件cr

3、awler4的主要特点是简单、高效,便于二次开发。2.2运行环境本程序运行windows平台(32/64位)下,运行于Jvm(需安装jdk6)上。2.3基本设计概念和处理流程图1:系统结构图软件基本流程如图1,即在开源软件crawler4j的基础上,添加如下功能:n以https方式登录、浏览功能。该功能主要完成以https方式登录Facebook,如果必要的话,也可以https方式来抓取页面。n修改页面提取规则(基于正则表达式),主要提取用用户及好友页面,由于Facebook大量采用AJAX技术,页面信息均为动态加载,因此为了减少爬虫的下载流量,目前抓取内容不包含用户的上传图片、评论等

4、内容,只包含用户的好友信息(ID与姓名,好友数量)。n添加抓取页面保存功能(以文件形式保存,以用户ID+name作为文件名)。如33993_YiGuo.html图2:爬虫基本流程图爬虫基本流程如图2,爬虫以https登录进入Facebook后,先爬行程序预先设定的种子页面,通过正则表达式提取页面中的好友链接,并放入待爬行队列,按照广度优先的调度算法(也可修改为节点度优先等其他调度)进行爬行,如此反复一直执行下去,程序可以通过设定爬行深度、抓取页面数量等参数来设定爬虫停止条件。通过在不同终端上以不同的Facebook用户名登录,爬虫可以同时在不同终端上运行,爬虫运行结束后,可以通过人工或

5、程序的方式将数据进行汇总,由于页面是以ID+name命名的文件方式保存,ID的唯一性确保了文件的唯一性,可以有效去除重复用户文件。2.6人工处理过程主要是指要手工输入合法的用户的Facebook用户名与密码。2.7尚未问决的问题本程序目前尚未设计程序UI,爬虫的调度算法(如何在相同时间内抓取更多用户)也有待下一步完善。另外,除robtos.txt外,如何避开社交网站的其他反爬虫措施也是一个值得研究的问题。3类设计3.1类作用与设计下面介绍各个类的作用。WebCrawler.java:作为爬虫的主要类之一,用来实现爬虫的一个线程。该类可以被继承以定制用户自己的爬虫,定制是通过修改shou

6、ldVisit()与Visit()两个方法实现的,分别实现对将要爬行与已爬行的页面按用户要求进行处理。CrawlController.java:实现对爬虫控制,负责设定爬虫线程数量、爬行深度、设定种子页面等参数。HTMLParser.java:用于实现对页面解析。在这个类里,我们将根据正则表达式来对页面包含的链接进行提取,并存入待爬取队列中。Page.java:定义page类,该类的主要作用是用来表现一个页面,定义其页面的标题、大小、链接、文本等属性。PageFetcher.java:主要用来完成用户登录、代理实现、页面下载等功能。在这个类中,我们将实现基于https的用户登录及浏览功

7、能。Configurations.java:主要负责从参数文件中读取用户参数。IdleConnectionMonitorThread.java:主要完成对爬虫线程状态进行监控,如果所有线程空闲,则再等60秒,如果依然空闲,则结束爬虫程序。MyCrawler.java:通过继承WebCrawler类来实现自己的爬虫,并实现对已抓取用户页面的保存。Controller.java:爬虫main()方法所在类,它通过生成一个CrawlControlle

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。