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

    

    摘要:对比新浪提供的API及传统的爬虫方式获取微博的优缺点,采用模拟登陆和网页解析技术,将获取的信息存入数据库中并进行分析。基于Python设计实现了新浪微博爬虫程序,可以根据指定的关键词获取相应的微博内容及用户信息。

    关键词:新浪微博;Python;爬虫

    0 引言

    自2009年8月新浪推出微博业务以来,微博逐渐地进入人们的日常生活中。越来越多的人开始加入到社交网络中,与他人互动。继新浪之后,腾讯、网易等也相继推出微博业务,但新浪做为国内微博界的“元老”,仍是广泛受到人们的欢迎。如今,新浪微博用户已达5亿多人。

    随着使用人数的直线上升,带来的是信息量的急剧膨胀。每天都有数以万计的信息在奔流。微博通过点赞,转发,评论功能将个人的声音快速放大到社会空间,将个人的行为放大成为社会行为。作为网络新媒体的代表,微博用户产生的大量微博数据以及用户之间的互粉,转发等关系作为真实社会关系的一种写照,为社会网络研究提供了绝佳的研究数据。基于微博的数据研究已成为当今社会科学和计算机科学研究的重点。

    1 新浪API

    API接口使用较为方便,通过一个接口就可以很方便得获取所需的信息,而无须了解具体实现过程。但是新版的新浪API接口却有着很大的限制。最主要的一点,如果要想获得某人的微博个人信息和发表的微博内容,就必须得到对方的授权许可。

    新浪API使用OAuth2.0授权机制。授权流程如图1所示。

    其中Client指第三方应用,Resource Owner指用户,Authorization Server是我们的授权服务器,ResourceServer是API月艮务器。

    首先应用需要先引导用户到某个地址,用户授权后得到access token,然后使用获取的access token来调用API,以此来得到用户的信息和微博的内容。Access_token相当于是令牌,持有相应的令牌才能得到所需。除此以外,access token还有授权有效期,对于测试应用来说只有一天的时间。

    除了这些限制外,新浪API针对一个用户在使用一个应用的请求次数上还有限制。对于测试授权来说,单个用户每个应用每小时只能请求150次。这对于爬取微博信息来说是不够的。正因为有如此诸多的不便,尽管API的实现对开发者是透明的,但笔者仍决定采用传统的模拟登陆方法,然后通过分析网页源代码来获取信息。

    2 模拟登陆

    新浪微博的内容只有在登陆后才可以获取。通过firefox+httpfox分析网页版微博登陆方式可以发现主要分为+步骤:(1)浏览器向新浪的服务器发送了一个GET请求报文,用于获取servertime,nounce字段,这两个字段是随机字段,每次登陆都不相同,用于加密用户名和密码;(2)用BASE64算法加密用户名,用RSA算法加密密码,向登陆URL发送包含加密后的用户名和密码的POST请求;(3)新浪服务器收到请求后与信息库进行比对,如果比对成功则发送一条含重定向的应答报文,浏览器解析得到最终跳转到的URL,打开该URL后,自动将该信息写入COOKIES,登陆成功。

    3 网页分析

    以新浪官方的搜索平台为搜索入口,输入关键词后,构造相应url。分析网页源代码,可以发现页面上的所有微博内容都在以 公司地址: 北京市西城区德外大街83号德胜国际中心B-11

    客服热线:400-656-5456??客服专线:010-56265043??电子邮箱:longyuankf@126.com

    电信与信息服务业务经营许可证:京icp证060024号

    Dragonsource.com Inc. All Rights Reserved

    
icp

相关文章!
  • 融合正向建模与反求计算的车用

    崔庆佳 周兵 吴晓建 李宁 曾凡沂<br />
    摘 要:针对减振器调试过程中工程师凭借经验调试耗时耗力等局限性,引入反求的思想,开展了

  • 浅谈高校多媒体教育技术的应用

    聂森摘要:在科学技术蓬勃发展的今天,我国教育领域改革之中也逐渐引用了先进技术,如多媒体技术、网络技术等,对于提高教育教学水平有很

  • 卫星天线过顶盲区时机分析

    晁宁+罗晓英+杨新龙<br />
    摘 要: 分析直角坐标框架结构平台和极坐标框架平台结构星载天线在各自盲区状态区域附近的发散问题。通过建