文章采集api(基于API的微博信息采集系统设计与实现(组图))
优采云 发布时间: 2021-11-09 19:02文章采集api(基于API的微博信息采集系统设计与实现(组图))
基于API的微博信息采集系统设计与实现小结:微博已经成为网络信息的重要来源。本文分析了微博信息采集的相关方法和技术,提出了基于API的信息采集方法,进而设计了一个能够采集相关信息的信息采集系统在新浪微博上。实验测试表明,信息采集系统可以快速有效地采集新浪微博信息。关键词:新浪微博;微博界面;资料采集; C#语言中文图书馆分类号:TP315 文档识别码:A 文章 编号:1009-3044(2013)17-4005-04 微博[1],微博的简称,是一个信息共享平台, 基于用户关系的传播和获取。用户可以使用140字的WEB、WAP和各种客户端组件的个人社区左右文字更新信息,实现即时分享。中国互联网络信息中心《第31次中国互联网络发展状况统计报告》显示,截至2012年12月末,截至2012年12月末,中国微博用户数为3.09亿,比2011年末增加5873万,网民中微博用户占比比上年末提高6个百分点,达到54.7%[2]。随着微博网络的影响力的迅速扩张,政府部门、学校、知名企业、公众人物都开通了微博。在公众的参与下,微博已经成为一个强大的虚拟社会。微博已成为网络信息的重要来源。如何快速有效地使用采集微博信息已成为一项具有重要应用价值的研究。
1 研究方法和技术路线 国内微博用户以新浪微博为主,本文拟以新浪微博为例,设计研究方法和技术路线。通过对*敏*感*词*科技文献和实际应用案例的分析,目前新浪微博的信息采集方法主要分为两类:一类是“模拟登录”、“网络爬虫”[3] ],以及“网页内容”“分析”[4]信息采集三种技术相结合的方法。二是基于新浪微博开放平台的API文档。开发者自己编写程序调用微博的API进行微博信息采集。对于第一种方法,难度比较高,研究技术复杂,尤其是“模拟登录”这一步。需要随时跟踪新浪微博的登录加密算法。新浪微博登录加密算法的变化会导致“网络爬虫”。“采集的失败最终导致微博信息缺失。同时,“网络爬虫”采集到达的网页需要进行“页面内容分析”,还有与基于API的数据采集相比,效率和性能差距明显。基于以上因素,本文拟采用第二种方法进行研究。基于新浪微博的微博信息采集系统开放平台API文档主要采用两种研究方法:文献分析法和实验测试法。文档分析方法:参考新浪微博开放平台的API文档,将这些API描述文档写成单独的接口文件。实验测试方法:在VS.NET2010平台[5]上,使用C/S模式开发程序调用接口类,采集微博返回的JOSN数据流,实现相关测试开发数据 采集 。
根据以上两种研究方法,设计本研究的技术路线:一是申请新浪微博开放平台App Key和App Secret。审核通过后,阅读理解API文档,将API文档描述写入API接口代码类(c#语言),然后进行OAuth2.0认证测试。认证通过后,可以获得Access Token,从而有权限调用API的各种功能接口,然后通过POST或GET调用API接口。最后返回JOSN数据流,最后解析这个数据流,保存为本地文本文件或数据库。详细技术路线如图1所示。 2研究内容设计微博信息采集系统功能结构如图2所示。系统分为七个部分,分别是:微博界面认证、微博用户登录、登录用户发微博、采集当前登录用户信息、采集其他用户信息、采集其他用户微博、采集学校信息、采集微博信息内容。1) 微博接口认证:访问大部分新浪微博API,如发布微博、获取私信等,都需要用户身份认证。目前新浪微博开放平台上的用户身份认证包括OAuth2.0和Basic Auth(仅用于应用开发者调试接口),新版接口也仅支持这两种方式[6] . 所以,系统设计开发的第一步是做微博界面鉴权功能。2) 微博用户登录:通过认证后,所有在新浪微博上注册的用户都可以通过本系统登录并发布微博。
3)采集登录用户信息:用户登录后,可以通过本系统查看自己的账号信息、自己的微博信息以及关注者的微博信息。4)采集 其他用户信息:这个功能主要是输入微博用户的昵称,可以采集获取昵称用户的账号信息,比如他有多少粉丝有,他关注哪些人,有多少人关注他,这个信息在微博采集中也是很有价值的。5)采集 其他用户的微博:此功能也使用微博用户的昵称来采集更改用户发送的所有微博信息。这个功能的目的是为了以后扩展为了自动采集 每隔一段时间将目标中多个微博用户的微博信息设置到本地进行数据内容分析。6)采集学校信息:该功能通过学校名称的模糊查询,获取学校微博账号ID、学校所在地区、学校类型信息。这是采集学校在微博上的影响力的基本数据。7)采集微博信息内容:您可以点击微博内容关键词查询,采集这条微博信息收录本关键词。但由于本次API接口调用需要高级权限,在系统完全发布前和新浪微博开放平台审核通过前,无法直接测试使用。3 主要功能的实现3. 1 微博界面认证功能 大部分新浪微博API访问都需要用户认证。本系统采用OAuth2.0设计微博界面认证功能,新浪微博认证流程如图3所示。
4 总结本文主要对微博信息采集的方法和技术进行了一系列的研究,然后设计开发了一个基于API的新浪微博信息采集系统,实现了微博的基础信息采集,在一定程度上解决了微博信息采集的自动化和采集结果数据格式的标准化。但是,目前本系统的微博信息采集方法只能输入单个“关键词”采集进行唯一匹配,没有批量多个“搜索词”采集,没有“话题型”微博信息采集功能,所以下一步的研究工作就是如何设计话题模型来优化系统。参考:[1]文锐.微博知乎[J].软件工程师, 2009 (12): 19-20. [2] 中国互联网络信息中心. 第31次中国互联网络发展统计报告[EB/OL]. (2013-01-1 5).http: ///hlwfzyj/hlwxzbg/hlwtjbg/201301/38508.htm. [3] 罗刚, 王振东. 自己手写的网络爬虫[M]. 北京:清华大学出版社, 2010. [4] 于满全, 陈铁瑞, 徐洪波. 基于块的网页信息解析器的研究与设计[J ]. 计算机应用, 2005, 25 (4):974-97 6. [5] Nick Randolph, David Gardner, Chris Anderson, et al.Professional Visual Studio 2010[M].Wrox, 2010. [6] 新浪微博开放平台.授权机制说明[EB] /OL]. (2013-01-19). 第31次中国互联网发展统计报告[EB/OL]。(2013-01-15).http: ///hlwfzyj/hlwxzbg/hlwtjbg/201301/38508.htm. [3] 罗刚, 王振东. 自己手写网页爬虫[M] . 北京: 清华大学出版社, 2010. [4] 于满全, 陈铁瑞, 徐洪波. 基于块的网页信息解析器的研究与设计[J]. 计算机应用, 2005, 25 (4):974-976. [5] Nick Randolph, David Gardner, Chris Anderson, et al.Professional Visual Studio 2010[M].Wrox, 2010. [6] 新浪微博开放平台。授权机制说明[EB/OL]. (2013-01-19). 第31次中国互联网发展统计报告[EB/OL]。(2013-01-15).http: ///hlwfzyj/hlwxzbg/hlwtjbg/201301/38508.htm. [3] 罗刚, 王振东. 自己手写网页爬虫[M] . 北京: 清华大学出版社, 2010. [4] 于满全, 陈铁瑞, 徐洪波. 基于块的网页信息解析器的研究与设计[J]. 计算机应用, 2005, 25 (4):974-976. [5] Nick Randolph, David Gardner, Chris Anderson, et al.Professional Visual Studio 2010[M].Wrox, 2010. [6] 新浪微博开放平台。授权机制说明[EB/OL]. (2013-01-19). 王振东。自己手写的网络爬虫[M]. 北京:清华大学出版社,2010. [4] 于曼全、陈铁瑞、徐洪波。基于块的网页信息解析器的研究与设计[J]. 计算机应用,2005, 25 (4):974-976. [5] Nick Randolph, David Gardner, Chris Anderson, et al.Professional Visual Studio 2010[M].Wrox, 2010. [6] 新浪微博开放平台. 授权机制解读[EB/OL]. (2013-01-19). 王振东。自己手写的网络爬虫[M]. 北京:清华大学出版社,2010. [4] 于曼泉、陈铁瑞、徐洪波。基于块的网页信息解析器的研究与设计[J]. 计算机应用,2005, 25 (4):974-976. [5] Nick Randolph, David Gardner, Chris Anderson, et al.Professional Visual Studio 2010[M].Wrox, 2010. [6] 新浪微博开放平台. 授权机制解读[EB/OL]. (2013-01-19). Professional Visual Studio 2010[M].Wrox,2010. [6] 新浪微博开放平台。授权机制说明[EB/OL]。(2013-01-19). Professional Visual Studio 2010[M].Wrox,2010. [6] 新浪微博开放平台。授权机制说明[EB/OL]。(2013-01-19).