1、摘 要近年来随着科学技术在我国较快速的发展,微博在我们的社会和生活中扮演了很 重要的角色,用户可以通过微博发送和获取大量的信息,也可以和其他用户进行交互, 来实现信息的实时评论、转发等操作。由于微博每天产生的信息量巨大,如何从大量 的微博信息中挖掘出有价值的信息,是现代互联网应用范围很广的一个产业,在这一 产业中,用户兴趣特征对挖掘微博的价值非常重要。然而,传统的用户兴趣挖掘方法 却无法较好的适应微博的特点。所以,本文在现有微博兴趣挖掘方法的基础上,设计 了基于关注者相似度分析的微博用户标签推荐系统,根据用户的标签信息来显示出用 户的兴趣所在。其中,本文挖掘的关注者主要包括当前用户的关注者和关
2、注当前用户 的粉丝。本文所做的主要工作包括以下几个方面:(1)针对微博特点,设计了基于关注者相似度分析的微博用户标签推荐系统,首 先对系统的整体框架进行了设计,然后,在微博数据的获取方式上,本文主要采用了 以新浪微博开放平台 API 接口为主,以网络爬虫为辅的方式来获取用户信息。(2)对获取的用户数据信息进行预处理,将重复和对推荐结果没有用的数据信息 在存放到数据库之前进行删除。然后,采用 SQL Server 2007 数据库来存放获取到的用 户信息。(3)进行标签推荐时,本文主要分析了基于 TF-IDF 与权重相结合的标签推荐算法 和基于用户交互关系的 TagRank 标签推荐算法。最后,
3、本文又整合了这两种算法提出 了基于关注者相似度分析的微博用户标签推荐算法,经过实验验证,发现本文提出的 算法得到的推荐较以上两种算法更准确。关键词:标签推荐,兴趣挖掘,微博,TagRank,TF-IDFIAbstractIn recent years, with the more rapid development of science and technology in China, the microblog plays a very important role in our society and life. The microblog users can send and recei
4、ve large amounts of information, and can also interact with other users, to achieve real-time information, commented, transfered and other operations. Due to the enormous amount of information generated by microblog every day, how to dig out the valuable information from a large number of microblog
5、information, is a wide range industry in the modern Internet applications. In this industry, the value of user interest feature on the dig microblog is very high. However the traditional user interest mining method can not adapt to the characteristics of microblog, so based on the existing micro-blo
6、g interest mining method ,the thesis designs a microblog users tag recommendation system which based on the similarity analysis of followers, according to the users label information to display the users interest.The mining of followers in this thesis, mainly includes the current users followers and
7、 the fans of the current user. The main contents of the thesis include:(1) According to the characteristics of microblog, the thesis designs a microblog users tag recommendation system which based on the similarity analysis of followers, firstly, the overall framework of the system is designed, then
8、, on the microblog data acquisition mode, the thesis mainly uses the open platform API interface of the sina microblog, supplemented by web crawlers way to get user information.(2) The preprocess of the users data and information obtained, the repeated and uselessinformation which without help to th
9、e recommendation result will be delete before is stored in theIIIdatabase. Then, using the SQL Server2007 database to store the acquired user information.(3) In label recommendation, the thesis mainly analyzes a label recommended algorithm which based on the combination of TF-IDF and weights,and ana
10、lyzes the TagRan algorithm which make recommendation based on the interactions between users. Finally, combining the advantages of two algorithms, the thesis proposes the microblog users tag recommendation algorithm which based on the similarity analysis of followers , through experimental verificat
11、ion, the recommendation got by the proposed algorithm was more accurately than the above two algorithms.KEY WORDS: label recommendation, interest mining, microblogging, TagRank, TF-IDF目 录摘 要IAbstractIII1 绪 论11.1 研究背景和意义11.2 国内外研究现状11.3 相关技术介绍21.3.1 数据挖掘技术21.3.2 社交网络数据挖掘技术31.4 论文的内容结构42 用户标签推荐数据获取72.
12、1 基于新浪微博 API 的微博数据获取82.2 基于网络爬虫的微博数据获取122.2.1 网络爬虫技术122.2.2页面解析技术152.3 两种获取方式的比较与选择163 用户标签推荐数据预处理193.1 新浪微博 API 获取数据预处理193.2 网络爬虫获取数据预处理223.3 用户标签推荐数据库设计223.3.1 数据库分析223.3.2 数据库详细设计253.3.3 数据库操作类设计264 用户标签推荐方法研究314.1 基于 TF-IDF 与权重相结合的用户标签推荐算法314.2 基于用户交互关系的 TagRank 标签推荐算法33V4.3 基于关注者相似度分析的标签推荐算法344
13、.4 用户标签推荐方法的相似度过滤和排名355 实验与性能评估375.1 实验数据与实验环境375.2 实验设计与结果396 总结和展望436.1 总结436.2 展望44参 考 文 献45致 谢491 绪论1 绪 论1.1 研究背景和意义近年来随着互联网技术在我国的飞速发展,截止到 2012 年 6 月底,中国网民数量 为 5.38 亿,互联网普及率达到了 39.9%,超过了 2011 年互联网普及率 30.2%的世界平均 水平。从国外比较流行的 MSN、Facebook,再到国内比较流行的 QQ,以及新浪微博的 使用,各种各样的网络平台不断的出现1。微博是一个实现用户信息分享、传播和获 取
14、信息的平台,用户可以使用网页或者客户端登录微博账号,发布微博信息,并且与 其他用户进行信息分享2。微博是一个使用门槛低、操作简单、易实现的交互性平台3。 在短短的几年时间里,微博的使用人数就已经破亿。在微博的研究领域,信息的主动发出者是用户,他是微博研究的核心。通过当前 用户可以了解到其他用户所发布的微博内容,以及通过研究用户之间的潜在关系,可 以为重要的用户提供个性化的服务4,并能为他提供新产品的推荐等商业活动5。然而, 在信息如此爆炸的时代,信息层出不穷的出现导致了信息的泛滥,对于用户来说,如 何能够更加快速、准确地推荐给当前用户他所感兴趣的信息十分重要,因此对信息的 高效提取,提供给当前
15、用户个性化的服务,从中筛选出高质量的内容,并降低提取信 息所用的时间和金钱成本变得越来越重要了。然而,用户的兴趣发现是从微博中提取 用户感兴趣信息的前提,用户的标签信息则更能直观的反应当前用户的兴趣特征,因 此,如何准确地获取用户的标签信息变得非常重要。同时,对于使用微博进行营销或 者广告促销的运营商来说,能够发掘出当前用户的标签兴趣特征,根据当前用户的标 签特征来进行商品的推荐,给自己也给用户带来了很多的方便。1.2 国内外研究现状用户的标签兴趣特征主要是根据当前好友中的标签信息来推荐相似度高的标签, 通过对用户标签的推荐,可以为当前用户提供他所感兴趣的信息。这是近年来应用非 常广泛的一种个
16、性化推荐方法。用户的标签兴趣特征主要分为显示的标签信息和隐式5的标签信息。其中,显示的标签信息主要是用户注册时,对标签信息的填写,然而, 对于大多数用户来说,他们并不想直接向网站描述自己的兴趣,所以我们需要通过隐 式的方式来获取当前用户的标签信息,从而根据用户的标签信息进行用户兴趣特征的 推荐。在国内,Li6等人通过对网页的标签分享网站 del.icio.us 等进行研究,将频繁使用 的标签通过关联规则挖掘的方法进行提取,将同现频率超过一定阀值的标签集合作为 话题,对话题中的用户和 URL 分别使用聚类的方法,根据用户的标签信息来发掘出用 户的兴趣。Liu7等人通过对微博内容中关键词的提取来发
17、掘用户的兴趣特征,他采用 TF-IDF 与统计机器翻译相结合的方式,将微博中出现次数较多的关键词推荐给当前用 户。Wu8等人通过采用 TF-IDF 和 TextRank 这两种方法来提取出微博中的关键词,从而 进行标签的推荐。陈渊9等人通过对国内外微博的特点和用户特征进行分析,提出了 针对不同群体的微博标签推荐方法。在国外,Adomavicius 和 TuzhiUn10通过对用户的访问记录进行挖掘得出用户之间 的关联规则,之后通过用户之间的关联规则和个人信息来发掘出用户之间的标签兴趣 模型。Sofia Stamou 和 Alexandras Ntoulas11根据网页的主题信息和关键词来发掘出
18、用户的 标签兴趣特征。Schwab12,13等人通过用户对感兴趣网页的选择作为样本,通过对网页 上指定位置出现的关键词进行选择来描述用户的兴趣14。Hochul Jeon 等15根据用户动 态的更新策略来对用户的兴趣特征建模。Wen16将收集到的微博整合成一个大本文, 利用 LDA 模型发现用户潜在的兴趣特征。根据微博用户的数据特点,Michelson17采用 维基百科中的分类的标签实体,将不同的标签进行了分类。1.3 相关技术介绍由于在进行关注者相似度分析的微博用户标签推荐研究时,我们需要用到相关的 数据挖掘方面的知识,本小节主要对数据挖掘方面的相关技术进行介绍。1.3.1 数据挖掘技术在这
19、个信息爆炸的时代,信息过量成为现代互联网领域需要面对的问题,如何从 这些海量的信息中及时发现有用的知识,提高信息利用率,需要用到数据挖掘方面的 知识18。数据挖掘不仅查询过去的信息,还能找出数据与数据之间的关系19,它是人工智 能和数据库技术领域的研究热点,它将大量的数据信息利用各种分析工具,在这些信 息中发现模型和数据间关系的趋势,这些模型和趋势可以被收集在一起来定义为挖掘 模型,从而应用于特定的数据挖掘与分析20。数据挖掘是一个多步骤的过程,主要分 为理解数据和数据的来源、了解相关知识与技术、集成数据与检查数据、去除错误与 不一致的数据、建立模型、处理挖掘到的数据信息、测试和验证挖掘结果等
20、 7 个步骤。 其中,在挖掘的过程中,大量的准备工作与规划要提前完成,而且至少 60%的费用要 花在数据收集上,而至少 60%的精力和时间要花在数据的净化、数据格式的转换、变 量整合以及数据表的链接上21。数据挖掘的主要功能有:(1)分类:是将数据库中的数据项分别分到每一个数据 库的表格中22;(2)数据总结:数据挖掘是从大量的数据信息中挖掘出有用的信息, 然后对它进行统计,分析23;(3)预测:通过对对象的发展规律做出分析,来做出对 未来的预测24;(4)关联分组:就是寻找数据库中值之间的联系,两种常用的技术是 关联规则和序列模式25。关联规则就是寻找在同一个事件中出现的不同项之间的联系 2
21、6;序列模式就是寻找事件在时间上的联系性 27。(5)聚类分析:就是将整个数据库 分成不同的群组,相同或者相似的数据分到一组,不同的分组之间有一定的差异28。(6)偏差检测:对研究的数据之间进行少数的、极端的特例的描述,并说明内在的原 因。1.3.2 社交网络数据挖掘技术随着 Facebook 的上市,社交网络又一次成为了人们关注的焦点。与传统的社交工 具相比,现代的社交网络成为了连接人与人之间、人与物之间更加方便、快捷的桥梁, 它使得现实世界和虚拟世界有了很好的沟通。从国外现有的 Facebook、Twitter、LinkedIn 这 3 种发展较好的社交网络来看,Facebook 主要是关
22、于朋友之间强关系的社交网络, 使用 Facebook 可以方便朋友之间的交流和信息的传递;Twitter 主要是关于单向关注的 用户之间弱关系的维护,Twitter 更方便应用于公司内部或者企事业单位内部上级向下 级消息的传达;LinkedIn 是主要针对于商务人士的社交网络,使用 LinkedIn 社交网络可 以方便商务人士交流、办公以及求职招聘等29。另外,从国内来看,随着 web2.0 网络应用形式的出现,2009 年新浪微博开始正式上线30。在新浪微博发展的这 6 年时间里,新浪微博的每一个功能和第三方应用功 能的变化,都对新浪微博中信息的传播和用户的行为产生了或大或小的影响31。例如
23、, 微博中出现的文字图片应用,使得现在所有基于分词技术微博信息分析器出现了失效 现象;又如在很早以前的微博版本中,微博只能够满足单张图片的添加,而其他的微 博信息则需要通过 URL 的形式加载在微博内容中,而今天的微博则可以满足视频、音 乐、大量图片、长微博、LBS 服务等内容32,其中任何一个功能的应用,都会对微博 中数据挖掘技术的应用产生影响。鉴于上述的种种现象,社交网络每天都有大量的用户信息(UGI,User Generated Information)以及各种各样的新应用出现,并且这些信息具有一定的规模性和群体性, 从而吸引了大量的研究者想从这些信息中发掘出有价值的信息。正如概率统计中
24、常用 的投硬币来计算硬币出现正反面的概率一样,如果仅仅从几次的投掷中很难看出其中 存在的规律,然而从几千甚至上万次的投掷中通过计算则较容易看出其中存在的规律。 然而,社交网络的分析和研究的应用范围很广,它是一门交叉范围很广的学科,通过 对社交网络中的信息进行数据挖掘,进行数据与数据之间的分析和研究,通过对社交 网络中的用户行为进行研究,来发掘出有价值的信息33。1.4 论文的内容结构本论文的主要研究工作如: 1、微博数据的获取:以实现新浪微博用户数据信息的全面、准确、高效地获取,通过新浪微博开放平台提供的 API 接口,网络爬虫等技术,来实现对新浪微博用户信 息更加快速、全面、高效地获取。2、
25、微博数据的预处理:通过上述的两种方式获取数据,由于主要是对微博用户标 签的推荐,所以主要保留用户的个人基本信息、用户的粉丝关系信息、用户的关注关 系信息、用户的标签信息、用户的微博内容等,而将其他与推荐无用的信息删除。同 时,在对微博数据进行预处理时,为了避免同一个用户被多次访问,在将用户放入数 据库时,通过在 SQL 语句中加入 ignore 语句,来删除已访问过的用户。3、微博数据的存储:本系统采用了 SQL Server2007 数据库来存放微博数据信息, 其中,使用 5 张表来存放微博用户的数据信息。4、标签推荐算法的研究:本文主要采用了基于 TF-IDF 与权重相结合推荐算法和基于用
26、户交互关系的 TagRank 标签推荐算法。最后,本文又整合了这两种算法得到了 基于关注者相似度分析的微博用户标签推荐算法。5、标签相似度推荐算法的实验:通过相关的实验数据来验证本文所提出的算法的 有效性。本论文计划分为六章,各章的结构组织计划如:第一章 绪论:本章主要介绍了基于关注者相似度分析的微博用户标签推荐的研 究背景和研究意义,并对关注者相似度分析的微博用户推荐的国内外现状进行介绍, 以及相关技术介绍,之后对论文的内容结构进行了介绍。第二章 用户标签推荐系统数据的获取:本章主要介绍了通过新浪微博开放平台 API 和通过网络爬虫来获取数据,以及对两种获取方式进行了比较与选择。第三章 用户
27、标签推荐数据的预处理:本章主要对新浪微博 API 接口微博数据和 网络爬虫两种方式获取的微博数据进行预处理,并将处理后的微博数据进行存储。第四章 用户标签推荐方法的研究:本章主要对基于 TF-IDF 与权重相结合的用户 标签推荐和根据用户之间的交互关系进行标签推荐的 TagRank 算法进行了介绍,在这 两种算法的基础上,提出了基于关注者相似度分析的微博用户标签推荐算法,然后对 系统的管理模块进行了介绍。第五章 实验与性能评估:本章主要对标签推荐方法进行了实验验证,通过实验 数据,实验环境,评测标准,实验设计和结果来验证了本文提出的算法的有效性。第六章 总结展望:本章主要对论文中所取得的成果和
28、论文的创新点进行介绍, 以及对论文中的缺点和不足进行了展望。2 用户标签推荐数据获取2 用户标签推荐数据获取通过对微博用户信息进行存储,可以收集到所有用户的标签信息、用户的关注者 信息、用户的粉丝信息等。微博用户较多,可以分为关注人数很少、而粉丝数较多的 用户,关注人数较多、而粉丝数较少的用户,关注人数和粉丝人数都较少的用户和关 注人数和粉丝人数都较多的用户这四种。然而对普通用户来说,在微博关注者和粉丝 者中,有很多进行推销或者随意关注的用户,所以本文主要对关注者进行研究,其中, 本文研究的关注者主要包括当前用户的关注者和当前用户的粉丝。所以,本章主要介绍基于关注者相似度分析的微博用户标签推荐
29、系统的整体框架, 并对用户标签推荐系统的数据获取进行了介绍,在获取微博用户数据时,主要从新浪 微博 API 接口、网络爬虫及 HTML 页面解析这两种方式进行介绍,并对这两种标签推 荐数据获取方式进行了比较,主要采取了以 API 接口方式获取数据为主,以网络爬虫 及 HTML 页面获取方式为辅。本文在数据挖掘技术的基础上,根据关注者的微博标签特征,设计了一个基于 B/S 结构的 web 用户标签推荐系统,其中数据库采用 Sql Server 2007 数据库进行存储, 根据数据挖掘技术的流程,可以将推荐系统分为以下几个主要模块:数据获取模块、 数据预处理模块、推荐模块、过滤模块、排名模块等,其
30、中,系统的整体框架设计如 图 2-1 所示:基于关注者相似度分析的微博用户兴趣挖掘系统数 据 获 取 模 块数 据 预 处 理 模块推 荐 模 块过 滤 模 块排 名 模 块图 2-1 系统的整体框架设计17由推荐系统的整体框架可以看出,为了能够从大量的微博用户信息中推荐出与该 用户相似度高的关注者标签信息,首先需要获取到大量的微博用户信息,然而如何获 取到大量的微博用户信息呢,这是进行用户标签推荐的第一步,也是非常重要的一步34。目前,新浪微博给开发者提供了相应的开放平台,开发者可以通过开发平台提供的 API 接口来获取到大量的用户信息35。但是运营商对新浪微博开放平台 API 接口的 获取
31、方式有限制,所以,本文主要采用了以开放平台 API 接口获取微博数据为主,以 基于网络爬虫及 HTML 页面解析方式为辅的方式,将这两种方式相结合来更加全面的 获取微博用户信息。2.1 基于新浪微博 API 的微博数据获取新浪微博用户在使用微博开放平台进行数据的获取之前,首先需要进行微博用户 账号的创建,只有进行了新浪微博用户的创建之后,用户才可以对微博开放平台提供 的应用进行授权,而经过授权之后的用户才可以访问其他用户的信息。用户进行微博 账号创建的流程图如图 2-2:进入新浪微博开放平台注册新浪微博用户填写用户个人信息创建应用编写并提交 用户信息获得开发者 身份获得 AppKey,AppS
32、 ecret开始Y成功N结束图 2-2 新浪微博用户账号的创建并获得 AppKey 和 AppSecret 的流程图首先,新浪微博用户需要先注册自己的微博账号,微博用户进入新浪微博开放平 台之后,首先登录新浪微博账号,在“常用引导”中查找到“新浪微博 API”之后进入,用 户首先填写个人基本信息,如开发者名称,所在地区,邮箱,联系电话,聊天工具, 网站,紧急联系人电话和姓名等,然后“提交”用户的基本信息,通过新浪微博开放平台的审核完成开发者个人信息认证。通过新浪微博开放平台认证的开发者,可以创建 应用,新浪微博开放平台为开发者提供了“移动应用”、“网站接入”、“站内应用”等三 种应用方式36。
33、本文主要采用“站内应用”这种应用开发方式进行开发。用户需要填写 相关的站内应用的基本信息,如“站内应用地址”、“应用实际地址”、“应用简介”、“应 用介绍”、“应用图标”、“应用图片”等,通过完善基本信息完成应用的申请,之后用户 提交信息,新浪微博开放平台需要通过审核来查看用户信息的完整性和准确性,通过 审核的用户可以获得新浪微博开放平台分配的 AppKey,AppSecret。每个用户创建一个 应用之后都会获得一组应用标识 AppKey 和 AppSecret。AppKey 是新浪微博的接口验证 序号。新浪微博开放平台 API 接口,并不是对每个用户都开放的,需要开发者经过 AppKey 验
34、证之后才能接入,而 AppSecret 是跟 AppKey 配套的,相当于 API 接口密钥, 用户只有获得了 AppKey 和 AppSecret 之后,才能调用 API 接口36。用户只有通过 OAuth 2.0 身份认证之后,才可以通过新浪微博开放平台 API 接口访问到大量的用户信息。 OAuth 2.0 授权不需要用户申请,它是一种安全的、无需第三方授权的身份认证,本文主要采用“站内应用”来获取用户授权,其站内应用创建流程图如图 2-3 所示,站内应用授权流程图如图 2-4 所示:创建站内应用编辑应用信息开发站内应用应用信息修改提交审核应用可以在站内访问开始Y成功N结束图 2-3 站
35、内应用创建流程图2 用户标签推荐数据获取发起授权请求弹出授权页回调应用页面获取用户授权信息获取用户授权微博用户数据信息开始用户进行授权操作Post方式N判断用户是否授权Y结束图 2-4 站内应用获取授权的流程图新浪微博用户通过 OAuth 2.0 授权认证获取到 access token 值之后,用户可以通过 API 接口发出的不同请求来获取用户数据。通过新浪微博开放平台 API 获取到以 JSON(Java Script Object Natation)或 XML 方式存储的信息。通过解析可以得到我们所需要的信息, 如用户的 id,用户的粉丝数,用户的关注数,用户的收藏数,用户的性别,用户的
36、注 册时间等信息。本文采用 Java SDK 来获取到 access token,首先在新浪微博开放平台,选择文档- 资源下载-SDK 下载出选择 Java SDK,下载后解压,导入到 Ecllipse,然后根据获得的 AppSecret 和创建站内应用信息配置配置文件 config.properties,本文使用的配置环境如 表 2-1:表 2-1 config.properties 配置文件信息client_ID4260700764client_SERCRET0a1edbd897c08c8d8175829cdbf991d2redirect_URIbaseURLaccessTokenURLa
37、uthorizeURLrmURL/配置文件加载类 WeiboConfigParser 的代码如:public class WeiboConfigParser public WeiboConfigParser ();private static Properties props = new Properties(); statictry props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(confi g.properties); catch (FileNotFoundException e)
38、e.printStackTrace(); catch (IOException e) e.printStackTrace();public static String getValue(String key) return props.getProperty(key);public static void updateProperties(String key,String value) props.setProperty(key, value);然后运行如代码来获取 acess_token 值,public class OAuth4Code public static void main(S
39、tring args) throws WeiboException, IOException Oauth oauth = new Oauth(); BareBonesBrowserLaunch.openURL(oauth.authorize(code,); System.out.println(oauth.authorize(code,);System.out.print(Hit enter when its done.Enter:);BufferedReader br = new BufferedReader(new InputStreamReader(System.in);String c
40、ode = br.readLine(); Log.logInfo(code: + code); trySystem.out.println(oauth.getAccessTokenByCode(code); catch (WeiboException e) if(401 = e.getStatusCode()Log.logInfo(Unable to get the access token.);elsee.printStackTrace();运行上述程序后会弹出浏览器地址跳转到授权认证页面,输入微博帐号和密码, 会调转到设置的回调地址页面,url 后面会传递 code 参数,然后在 cons
41、ole 输入 code 就 能获取到 oauth2 的 access_token 值,然后就可以使用该值进行数据获取。由于新浪微博开放平台提供的 API 接口对用户的调用频次和使用范围都有所限 制,同时,在用户抓取大量的微博用户信息的时候,为了使得服务器负载均衡,用户 一次请求只能返回 5000 个微博信息,然而,为了能够得到更加全面、更加多的访问用 户信息,用户需要频繁的调用接口来获得微博信息,这样频繁的操作会导致程序调用 出现错误,若程序出错会导致采集到的数据有时间段的缺失,这样会对数据分析造成 影响,使得结果可能出错。所以,本文采用 API 和网络爬虫及 HTML 页面解析相结合 的技术
42、来获取用户的信息。2.2 基于网络爬虫的微博数据获取2.2.1 网络爬虫技术网络爬虫,是按照一定的规则自动的抓取网络中的程序或者脚本的过程37。由于 本文主要研究的是基于关注者相似度分析的微博用户标签的推荐,所以本文主要对微YN爬取队头URL,对爬取的 XML文件进行xpath解析, 转为json文件选取爬虫起点N收集所有的URL,形 成队列获取该用户的粉丝/ 关注者的列表提取该用户关注者/ 粉丝的id分割json文件,收 集该json文件用户的 id和其他信息,放入用 户信息缓存表中从用户信息缓存表中提 取一个user_id队列为空?开始YN抓取爬虫起点对应网页中的URL链接json文件中是
43、否有用户数据该用户是否在用户信息缓存表中存在所有uid均已处理Y结束博的用户信息、用户标签信息、用户关注信息、用户粉丝信息等进行研究。由于爬虫 的时候可以从已经授权的用户信息开始进行爬取,也可以从用户指定的网页开始进行 爬取,因此,选择一种爬取的起点,抓取爬虫起点对应的网页中的 URL 链接,收集该 网页中所有的 URL,形成 URL 队列,之后判断该队列中的内容是否为空,如果不为空 的话,就选择该队列中的队头 URL,之后对爬取的 XML 文件进行 xpath 解析,将 XML 文件转换为 json 文件,然后判断该 json 文件中是否有用户数据,如果有用户数据信 息则分割该 json 文
44、件,之后收集该 json 文件中用户的 id 和该用户所对应的用户信息, 然后将用户信息放入到缓存表中,之后获取该用户所对应的关注者或者粉丝列表,提 取该用户的关注者或者粉丝的 id,然后判断该用户的关注者或者粉丝是否在用户信息 缓存表中,如果不在则将该用户的关注者或者粉丝信息加入到用户信息缓存表中,如 果该用户的所有关注者或者粉丝信息都已经被抓取过之后,则爬取 URL 队列中的下一 个 URL 页面信息,依次循环,直到队列中的所有 URL 信息都已经被抓取过之后为止。 之后,将获取到的所有用户信息放到 hash 表中,其中,在进行网络爬虫对用户的 URL 进行访问的时候,采用深度优先搜索算法
45、进行爬取,进行 URL 爬取时选择爬取的深度 为 3,网络爬虫技术的流程图如图 2-5 所示:N将该用户的关注者/ 粉丝的信息加入用户 信息表缓存表中图 2-5 网络爬虫技术流程图一旦开始进行爬虫,程序就不会自动停止,只有用户“终止”时才会停止爬行。 用户首先从一种爬行起点开始,从当前用户的信息表中提取出用户的 user_id ,调用新 浪提供的 user/counts,可以获取用户的粉丝及关注数和微博数等信息。返回如结果:“id”:” 2802114054”,“followers_count:”1229309”, “friends_count:”499”, “statuses_count:”
46、13220”,由于微博的主要功能就是用户与用户之间进行交互和用户可以获取大量资讯信息,而用户关注其他用户信息属于用户直观行为,更能直接通过关注者的标签来显示 当前用户的兴趣特征,所以本文主要对关注者多的用户进行标签推荐,而对于关注者 较少的用户来说,则从他的粉丝着手进行标签推荐。用户首先调用 Friends/followers/ids 列表,然后从关注好友列表中获取一个关注着用户的标签信息,此时返回的结果如:“5176307949”:“80 后”,“美食”,“时尚”通过调用函数得到用户的关注者/粉丝信息,先判断用户信息缓存表中是否存 在该用户的 id,如果存在则直接访问该用户的其他关注者/粉丝信息,否则将该用户的 id 放入用户信