社交网络数据采集算法的设计(软件工程课程设计报告).doc
《社交网络数据采集算法的设计(软件工程课程设计报告).doc》由会员分享,可在线阅读,更多相关《社交网络数据采集算法的设计(软件工程课程设计报告).doc(21页珍藏版)》请在咨信网上搜索。
1、软件工程课程设计社交网络数据收集算法的设计组号第21组组长姓名:盖云东学号:130104010049组员姓名:任志成学号:130104010121组员姓名:马剑楠学号:130104010004组员姓名:陈海涛学号:130104010045摘要随着互联网的发展,人们正处于一个信息爆炸的时代。社交网络数据信息量大、主题性强,具有巨大的数据挖掘价值,是互联网大数据的重要组成部分。一些社交平台如Twitter、新浪微博、人人网等,允许用户申请平台数据的采集权限,并提供了相应的API 接口采集数据,通过注册社交平台、申请API授权、调用API 方法等流程获取社交信息数据。但社交平台采集权限的申请比较严格
2、,申请成功后对于数据的采集也有限制。因此,本文采用网络爬虫的方式,利用社交账户模拟登录社交平台,访问社交平台的网页信息,并在爬虫任务执行完毕后,及时返回任务执行结果。相比于过去的信息匮乏,面对现阶段海量的信息数据,对信息的筛选和过滤成为了衡量一个系统好坏的重要指标。本文运用了爬虫和协同过滤算法对网络社交数据进行收集。关键词:软件工程;社交网络;爬虫;协同过滤算法目录摘要 2 -目录 3 课题研究的目的- 1 -1.1课题研究背景- 1 -2 优先抓取策略-PageRank 2 -2。1 PageRank简介 2 2。2 PageRank流程- 2 3 爬虫- 4 -3.1 爬虫介绍- 4 3.
3、1.1爬虫简介 4 -3。1。2 工作流程- 4 3。1。3 抓取策略介绍- 5 3.2 工具介绍 6 3.2。1 Eclipse- 7 3.2。2 Python语言- 7 3.2.3 BeautifulSoup 7 3。3 实现- 8 -3。4 运行结果- 9 4 算法部分- 10 4。1获取数据的三种途径- 10 -4.1.1通过新浪微博模拟登录获取数据- 10 -4。1.2 通过调用微博API接口获取用户微博数据- 11 -4.2基于用户的协同过滤算法 14 -4.2。1集体智慧和协同过滤- 14 4.2.2深入协同过滤核心- 15 4.3算法实现 18 -结论- 22 参考文献 23
4、-课题研究的目的1.1 课题研究背景互联网导致一种全新的人类社会组织和生存模式悄然走进我们,构建了一个超越地球空问之上的、巨大的群体网络群体,21世纪的人类社会正在逐渐浮现出崭新的形态与特质,网络全球化时代的个人正在聚合为新的社会群体。随着社交网站的兴起,网络社交蓬勃发展,新的互联网热再次升温,有分析人士甚至说,网络社交将缔造人际交往的新模式。互联网的兴起打破了传统的社会交往方式,简单、快捷和无距离的社交体验推动社交网络快速发展,以Facebook、Twitter、微博等为代表的应用吸引了大量活跃网络用户,社交网络信息呈现爆发式的增长。社交网络信息反映了用户的网络行为特征,通过对这些信息的研究
5、,可以实现社会舆论监控、网络营销、股市预测等。社交网络信息的重要价值在于实时性,如何快速、准确、有效地获取目标信息非常重要.但社交网络属于Deep Web 的专有网络,信息量大、主题性强,传统搜索引擎无法索引这些Deep Web 页面,只有通过网站提供的查询接口或登录网站才能访问其信息,这增加了获取社交网络信息的难度.目前国外有关社交网络数据采集模型的研究较少,对社交网络的研究主要集中在社会网络分析领域。国内社交网络平台的数据采集技术研究有一定成果,如文献提出并实现一种利用新浪微博应用程序接口(Application Programming Interface,API)和网络数据流相结合的方式
6、采集数据,文献利用人人网开发平台提供的API 实现数据采集,并通过WebBrowser 和HttpFox 监测信息交互时的数据包,实现动态获取Ajax 页面信息等.2 优先抓取策略PageRank2。1 PageRank简介PageRank,即网页排名,又称网页级别、Google左侧排名或佩奇排名是Google创始人拉里佩奇和谢尔盖布林于1997年构建早期的搜索系统原型时提出的链接分析算法,自从Google在商业上获得空前的成功后,该算法也成为其他搜索引擎和学术界十分关注的计算模型。目前很多重要的链接分析算法都是在PageRank算法基础上衍生出来的。2。2 PageRank流程首先PageR
7、ank的计算充分利用了两个假设:数量假设和质量假设.步骤如下: 1) 在初始阶段:网页通过链接关系构建起Web图,每个页面设置相同的PageRank值,通过若干轮的计算,会得到每个页面所获得的最终PageRank值。随着每一轮的计算进行,网页当前的PageRank值会不断得到更新.2) 在一轮中更新页面PageRank得分的计算方法:在一轮更新页面PageRank得分的计算中,每个页面将其当前的PageRank值平均分配到本页面包含的出链上,这样每个链接即获得了相应的权值。而每个页面将所有指向本页面的入链所传入的权值求和,即可得到新的PageRank得分.当每个页面都获得了更新后的PageRa
8、nk值,就完成了一轮PageRank计算。然后,引入阻尼系数p,p的值一般为0.85。完整公式如下:是被研究的页面,是链入页面的数量,是链出页面的数量,而N是所有页面的数量。使用幂法求PageRank。那公式可以转换为求解的值,其中矩阵为 A = q P + ( 1 一 q) /N . P 为概率转移矩阵,为 n 维的全 1 行。1. 计算P概率转移矩阵:1) 用矩阵表示连通图2) 网页链接概率矩阵3) 概率转移矩阵P2. 计算A矩阵:1) 计算 /N2) 计算A矩阵3. 循环迭代计算PageRank3 爬虫3。1 爬虫介绍3。1.1爬虫简介网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社
9、区中间,更经常被称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本,已被广泛应用于互联网领域。3。1.2 工作流程 网络爬虫的基本工作流程如下:(1) 选取想爬取的网页的URL。(2) 将这些URL放入待爬取URL队列.(3) 根据待爬取队列中的URL获取对应的网页。(4) 分析获取的网页,解析DNS,从中得到数据以及新的URL,并将已经抓取的URL放入已爬取URL队列。(5) 将新的URL放入待爬取URL队列,数据输出,存入本地下载库中。 具体流程图如下:图3-1 爬虫工作流程3。1。3 抓取策略介绍在爬虫应用中,待爬取URL队列是很重要的一部分。待爬取队列中的URL
10、以怎样的顺序爬取同样很重要,这决定这数据的获取顺序。决定待爬取队列中的URL以怎样的顺序爬取,这就是抓取策略。下面介绍几种常见的抓取策略:1. 广度优先遍历策略:广度优先遍历策略是指在抓取过程中,在完成与当前结点直接链接的结点的抓取后,才选择其中一个结点继续向下一层抓取。这种方法的思想是认为在与初始URL在一定链接距离内的网页具有最大的主题相关性。这种方法的缺点是,随着抓取网页数量的增加,大量无关网页会被下载,造成不必要的浪费。2. 深度优先遍历策略:深度优先遍历策略是指在抓取开始,选择与当前结点相链接的一个结点,分析其URL,然后在选择其中一个进行抓取,这样重复下去,直到其中一条链路抓取完毕
11、,然后再重新选择一个未抓取的URL进行抓取。显然这种方法的深度决定着抓取的命中率及效率。随着深度的增大,命中率及效率会成倍的下降。3. 最佳优先遍历策略最佳优先遍历算法根据一定的网页分析算法,算出网页与初始网页的相关性,相关性高的网页优先抓取,这样,爬虫程序只抓取那些根据计算得到的“有用的”网页,但是这样可能导致在抓取路径上一些相关网页被遗漏。4. Partial PageRank策略Partial PageRank策略借鉴了PageRank算法的思想,根据已经下载网页的URL以及待爬取URL队列,计算每个网页的PageRank值,根据值得大小进行抓取排序。为防止部分相关网页因PageRank
12、值小而一直不能被抓取,一般抓取K次后重新计算PageRank值.因为一些新下载的网页没有PageRank值,所以将这个网页的所有入链传递的PageRank值汇总,就够成了这些页面的PageRank值,从而参与排序。3。2 工具介绍本爬虫的实现以及运行都是基于Eclipse的,Eclipse安装Pydev插件后即配置好Python语言的开发环境,在解析模块还使用了BeautifulSoup插件。下面介绍主要用到的这三种工具:3。2。1 EclipseEclipse是一个开源的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。本文通过安装Pyde
13、v插件构建Python语言的开发环境。3.2.2 Python语言Python是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。Python的设计哲学是“优雅、明确、简单”。其特点是易读、易维护以及强制用空白符作为语句缩进,使得不好的编程习惯(例如if语句下一行不向右缩进)都不能通过编译。Python具有丰富和强大的库,它常被称为胶水语言,能够把用其它语言制作的各种模块(尤其是CC+)很轻松的联结在一起。需要注意的是在使用某些扩展类库的时候可能需要考虑平台问题,某些可能不提供跨平台的实现.Python具有良好的可扩展
14、性。Python还可以以交互模式运行,比如主流操作系统Linux、Mac、Windows都可以直接在命令模式下直接运行Python交互环境。直接下达操作指令即可实现交互操作。Python目前已经公布了Python3。x版本,本爬虫使用Python27编写。3.2.3 BeautifulSoupBeautifulSoup是Python的一个插件,用于解析HTML和XML,是替代正则表达式的利器,本爬虫使用BeautifulSoup4。BeautifulSoup会产生一个DOM树,尽可能和源文档的含义内容一致,这种措施通常能够满足搜集数据的需求。BeautifulSoup下载地址为:http:/
15、安装过程如下:(1)下载完成后解压缩。(2)打开命令提示符,将工作目录切换到BS的目录下。(3)运行setup。py build。(4)运行setup.py install。(5)输入Python,进入Python模块,然后输入from bs4 import BeautifulSoup检测是否成功.3.3 实现主要含有主调度函数、URL管理、HTML下载器、HTML解析器、HTML输出这五个模块.系统结构图如下:图32 爬虫功能结构图下面是主要的调度函数:from baike_spider import url_manager, html_downloader, html_parser,htm
16、l_outputerclass SpiderMain(object): def _init_(self): self.urls = url_manager.UrlManager() self。downloader = html_downloader。HtmlDownloader() self。parser = html_parser。HtmlParser() self。outputer = html_outputer。HtmlOutputer() def craw(self, root_url): count = 1 self.urls.add_new_url(root_url) while
17、self.urls.has_new_url(): try: new_url = self.urls。get_new_url() print craw %d : %s %(count,new_url) html_cout = self.downloader。download(new_url) new_urls, new_data = self.parser.parse(new_url,html_cout) self。urls。add_new_urls(new_urls) self.outputer。collect_data(new_data) if count = 20: break count
18、 = count + 1 except: print carw failed self.outputer.output_html()if _name_=”_main_: root_url = ”http:/baike.baidu。com/view/21087。htm obj_spider = SpiderMain() obj_spider。craw(root_url)3.4 运行结果本次测试爬取百度百科中Python的20条相关词条。由于时间以及技术有限,尚不能完美运行,爬虫在爬取到主页面后就会停止运行,错误还没有找到,以后会尽量完善.4 算法部分4。1获取数据的三种途径4。1。1通过新浪微博
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 社交 网络 数据 采集 算法 设计 软件工程 课程设计 报告
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。