推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

基于Python的新浪微博爬虫研究

更新时间:2019-12-29 21:23:36 大小:1M 上传用户:songhuahua查看TA发布的资源 标签:python 下载积分:1分 评价赚积分 (如何评价?) 收藏 评论(0) 举报

资料介绍

对比新浪提供的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的格式表示即  
“\uXXXXX为数字或字母眼望上去很凌乱是如果  
查看经过处理后的源代码以发现每条微博都有相似的格  
且是以一形式展现的。  
由此可见储在服务器上的源文件原生用  
户在浏览时台通过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-idPage-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)

暂无评论