推荐星级:
- 1
- 2
- 3
- 4
- 5
基于Python的新浪微博爬虫研究
资料介绍
对比新浪提供的API及传统的爬虫方式获取微博的优缺点,采用模拟登陆和网页解析技术,将获取的信息存入数据库中并进行分析。基于Python设计实现了新浪微博爬虫程序,可以根据指定的关键词获取相应的微博内容及用户信息。
部分文件列表
文件名 | 大小 |
基于Python的新浪微博爬虫研究.pdf | 1M |
部分页面预览
(完整内容请下载后查看)无线互联科技
Wireless Internet Technology
第6期
2015年3月
No.6
M a r c h ,2 0 1 5
基于Python的新浪微博爬虫研究
吴剑兰
(江苏警官学院,江苏 南京 210031)
摘 要:对比新浪提供的API及传统的爬虫方式获取微博的优缺点,采用模拟登陆和网页解析技术,将获取的信息存入数据
库中并进行分析。基于Python设计实现了新浪微博爬虫程序,可以根据指定的关键词获取相应的微博内容及用户信息。
关键词:新浪微博;Python;爬虫
0
引言 首先应用需要先引导用户到某个地址,用户授权后得
自2009年8月新浪推出微博业务以来,微博逐渐地进入人 到access_token,然后使用获取的access_token来调用
们的日常生活中。越来越多的人开始加入到社交网络中,与他 API,以此来得到用户的信息和微博的内容。Access_token
人互动。继新浪之后,腾讯、网易等也相继推出微博业务,但 相当于是令牌,持有相应的令牌才能得到所需。除此以外,
新浪做为国内微博界的“元老”,仍是广泛受到人们的欢迎。 access_token还有授权有效期,对于测试应用来说只有一
[1]
如今,新浪微博用户已达5亿多人。
天的时间。
除了这些限制外,新浪API针对一个用户在使用一个应用
随着使用人数的直线上升,带来的是信息量的急剧膨胀。
每天都有数以万计的信息在奔流。微博通过点赞,转发,评论 的请求次数上还有限制。对于测试授权来说,单个用户每个
功能将个人的声音快速放大到社会空间,将个人的行为放大 应用每小时只能请求150次。这对于爬取微博信息来说是不够
成为社会行为。作为网络新媒体的代表,微博用户产生的大 的。正因为有如此诸多的不便,尽管API的实现对开发者是透
量微博数据以及用户之间的互粉,转发等关系作为真实社会 明的,但笔者仍决定采用传统的模拟登陆方法,然后通过分
关系的一种写照,为社会网络研究提供了绝佳的研究数据。基 析网页源代码来获取信息。
于微博的数据研究已成为当今社会科学和计算机科学研究的
重点。
2
模拟登陆
新浪微 博的内容只有在登陆后才可以获取。通过
1
新浪API firefox+httpfox分析网页版微博登陆方式可以发现主要分
API接口使用较为方便,通过一个接口就可以很方便得获 为三个步骤:(1)浏览器向新浪的服务器发送了一个GET请求
取所需的信息,而无须了解具体实现过程。但是新版的新浪 报文,用于获取servertime,nounce字段,这两个字段是随
API接口却有着很大的限制。最主要的一点,如果要想获得某 机字段,每次登陆都不相同,用于加密用户名和密码;(2)用
人的微博个人信息和发表的微博内容,就必须得到对方的授 BASE64算法加密用户名,用RSA算法加密密码,向登陆URL发
权许可。
新浪API使用OAuth2.0授权机制。授权流程如图1所示。
送包含加密后的用户名和密码的POST请求;(3)新浪服务器
收到请求后与信息库进行比对,如果比对成功则发送一条含
重定向的应答报文,浏览器解析得到最终跳转到的URL,打开
该URL后,自动将该信息写入COOKIES,登陆成功。
3
网页分析
以新浪官方的搜索平台为搜索入口,输入关键词后,
构造相应url。分析网页源代码,可以发现页面上的所有
微博内容都在以<script>STK && STK.pageletM && STK.
pageletM.view({"pid":"pl_weibo_direct",开头的行中。源代
码中大多为反斜线(“\”),而中文则以UTF-8的格式表示,即
“\uXXXX”(X为数字或字母),一眼望上去很凌乱。但是如果
查看经过处理后的源代码,可以发现每条微博都有相似的格
式,而且是以一种“树”的形式展现的。
由此可见,存储在服务器上的源文件是“原生”的,而用
户在浏览时,后台通过Javascript程序处理这部分代码,将
其生成xml格式代码,进而交给浏览器去解析。
图1 OAuth2.0授权机制
其中Client指第三方应用,Resource Owner指用户,
Authorization Server是我们的授权服务器,Resource
Server是API服务器。
Python的第三方库BeautifulSoup/lxml是Python的
html/xml解析器,可以很好地处理不规范的标记并生成剖析
树。Lxml库支持XPath规范,XPath是一种在xml文档中查找信
作者简介:吴剑兰(1993- ),男,江苏苏州人,本科。
- 93 -
第6期
2015年3月
No.6
M a r c h ,2 0 1 5
无线互联科技·计算机世界
息的语言,用于在xml文档中通过元素的属性进行导航,利用 词 是“ 的 ”“是 ”“ 在 ”这 一 类 词 ,这 些 词 叫 做“ 停 用 词 ”,对 结
[2]
XPath可以方便在html文档中定位感兴趣的节点。
果 没 有 帮 助 ,需 要 过 滤 掉 。
仔细观察可以发现,每条微博都以<div class='WB_
过滤掉之后,可能会有多个词出现的次数一样多,但这并
cardwrap …>作为起始,而其中的<a class=”W_texta 不意味着这些词的关键性是一样的。因此,还需要一个重要
W-fb”…>节点含有昵称,<p class=”comment_txt”>节点 性调整系数来衡量一个词是不是常见词。如果某个词比较少
含有微博内容,以此类推可以得到时间,转发数,评论数等 见,但是它在其中多次出现,那么它就可能就是我们需要的关
信息。
键词。用统计学语言表达,就是在词频的基础上,要对每个词
对于获取微博用户个人的信息,也是使用与此相类似 分配一个"重要性"权重。最常见的词给予最小的权重,较常
的方法。通过分析用户个人主页的源代码,可以得到UID,和 见的词给予较小的权重,较少见的词给予较大的权重。这个
Page-id。Page-id用于构建指向用户个人信息的URL地址,其 权重叫做"逆文档频率"(IDF),它的大小与一个词的常见程
格式为:’http://weibo.com/p/’+page-id+’/info’。此即为 度 成 反比。知 道了"词 频 "(T F)和 " 逆 文 档 频 率 "(I D F)以 后,
要进行分析的URL地址。
将这两个值相乘,就得到了一个词的TF-IDF值。某个词对文章
对于获取用户发表的微博这块,有一个难点。在使用浏 的重要性越高,它的TF-IDF值就越大。所以,排在最前面的几
览器浏览用户发表的微博时,一开始不会将一页上的所有微 个 词,就 是 关 键 词。
博都显示出来,而是当滚动到底部时自动加载,如此滚动加
根据这一算法思想,爬虫程序可以根据爬取的一系列微
[3]
载两次才能把一页上的微博都显示出来。获取得到的网页源 博条目,获得这些条目的关键词。
代 码 同 样 也 是 不 完 整 的 ,只 含 有 每 页 的 前 十 条 左 右 ,必 须 进 行
手动滚动才能显示完整。因此,可以采用发送HTTP请求的GET
方法,构建相应的URL来模拟这一滚动过程。
5
结语
文章分析了新浪API的一些认证限制,新版的API需要被
搜索用户提供相应的授权,因此采用传统爬虫的方式。然后
模拟登陆、网页分析、关键词提取等三个方面介绍了如何爬取
4
关键词的提取
这个爬虫程序还有一个可以对爬取到的微博内容进行分 新浪微博信息,研究用户登陆微博的过程,从网页源代码中
析,提取关键词的功能。使用TF-IDF算法来实现。TF-IDF算法 构造利于分析的DOM树并提取所需信息,运用TF-IDF算法获
的思想如下:为了提取关键词,一个容易想到的思路就是找到 取微博集中的关键词,最终实现了一个基于Python的新浪微
出现次数最多的词。如果某个词很重要,它应该在其中多次 博爬虫程序。
出现,于是,进行“词频”(TF)统计。但是,出现次数最多的
[参考文献]
[1]郭晓云.基于Python和Selenium的新浪微博数据访问[J].电脑编程技巧与维护,2012.
[2]齐鹏,李隐峰,宋玉伟.基于Python的Web数据采集技术[J].电子科技,2012.
[3]阮一峰.TF-IDF与余弦相似性的应用[EB/OL].(2013-03-15).http://www.ruanyifeng.com/blog/2013/03/tf-idf.html.
Sina Micro-blog Crawler Based on Python
WU Jianlan
Jiangsu Police Institute Nanjing 210031 China
)
(
,
,
The advantages and disadvantages of obtaining micro-blog contrast Sina provides API and traditional crawler style, using
Abstract:
simulated landing and Webpage analysis technology, the information stored in the database and analysis. The design and implementation of
Python based on the Sina micro-blog crawler, can obtain micro-blog content and user information corresponding to the specified keyword.
Sina micro-blog Python Crawler
;
;
Key words:
- 94 -
全部评论(0)