网站调用新浪微博内容(新浪微博数据爬取研究(2016):基于Python的语言)

优采云 发布时间: 2021-11-22 03:08

  网站调用新浪微博内容(新浪微博数据爬取研究(2016):基于Python的语言)

  新浪微博数据爬取研究.doc

  新浪微博数据爬取研究

  摘要:新浪微博的快速发展促进了基于微博数据的研究的发展。如何获取微博数据是相关研究的首要问题。文章分析了爬取新浪微博数据的方法,提出了一种基于Python的语言,直接设置登录用户的cookie信息来模拟浏览器访问的新浪微博数据爬取程序,解决了不使用的问题新浪微博开放平台API抓取微博数据的主要问题是实现的爬虫程序编程简单,性能稳定,可以有效获取微博数据。

  关键词:新浪微博;数据抓取;微博爬虫;Python

  中文图书馆分类号:TP391;TP311 文件识别码:A 文章 编号:2095-1302(2016)12-00-04

  0 前言

  随着互联网的不断普及,人们越来越多地参与到互联网社交活动中。微博作为一种典型的互联网社交活动,发展迅速。新浪微博是中国最早、规模最大的微博社区。新浪微博数据中心发布的《2015年微博用户发展报告》指出:“截至2015年9月,微博月活跃数已达到2.22亿,同比增长33%。 2014年;日活跃用户达1亿,同比增长30%。随着微博平台功能的不断完善,微博用户群逐渐稳定并保持持续增长。”[1]

  微博用户群的增长使得基于微博数据的社交网络分析[2]、用户行为分析[3、4]、网络数据挖掘[5]越来越重要,以及如何从微博中学习爬取数据兴趣成为研究人员要解决的首要问题。本文分析了微博数据的爬取方法,提出了一种基于Python模拟浏览器登录的微博数据爬取方案,并讨论了微博反爬取机制的相关处理。

  1 如何抓取微博数据

  爬取微博数据通常有两种方式。一是调用新浪微博开放平台提供的微博开放接口,二是开发爬虫程序模拟微博登录,分析获取的HTML页面,提取需要的信息。

  1.1 调用微博开放接口

  新浪微博开放平台[6]提供二十余种接口,涵盖微博内容、评论、用户、关系等各种操作。理论上,这种方法是最直接、最方便的方式。但是,新版微博开放界面存在一定的局限性,对于小型研究团队或个人来说,不是很方便。亮点如下:

  (1)微博开放接口使用Oauth2.0认证授权,如果想获取其他用户的个人信息和微博内容,必须对该用户进行授权;

  (2)微博开放界面有访问频率限制,对于测试用户的每个应用,每个应用每小时只能访问150次;

  (3)很多科研机构需要的数据只能通过高级接口访问,需要特殊申请和付费。

  正是因为这些局限,设计和开发自己的网络爬虫程序来获取微博数据,成为了不可缺少的替代或替代方案。

  1.2 开发微博爬虫程序

  微博爬虫程序的设计和开发需要分析新浪微博的特点,明确爬取数据的目的和用途,选择合理的开发语言,保证微博数据的高效稳定访问。

  1.2.1 新浪微博的特点

  与一般的网站相比,新浪微博具有以下特点:

  (1)新浪微博为登录用户,用户必须登录后才能访问微博数据;

  (2)微博博文显示采用延迟加载机制,一次只显示一个微博页面的部分博文,当用户滚动到博文底部时,其他博文在当前页面上会继续加载;

  (3)新浪微博有比较完善的反爬虫机制,微博服务器一旦识别到爬虫程序,就会拒绝访问。

  基于新浪微博的上述特点,在设计微博爬虫时,需要有针对性地处理以上特点。

  1.2.2 开发语言选择

  从快速获取微博数据的角度来看,Python是开发微博爬虫的首选语言。它具有以下特点:

  (1)Python 是一种解释型高级语言,具有文本简单、易学、开发速度快等特点;

  (2)Python有更丰富的库和第三方库,比其他语言开发爬虫更方便。考虑到新浪微博一段时间后会对其数据格式进行微调,所以使用Python开发微博爬虫程序具有更高的易维护性。

  2 微博爬虫的实现

  2.1 微博爬虫的框架结构

  本文讨论的微博爬虫程序包括五个功能模块:爬虫调度器、URL管理器、页面加载器、HTML解析器和数据导出器。其框架结构如图1所示。

  图1 微博爬虫框架结构

  2.1.1个爬虫调度器

  爬虫调度器是爬虫的控制程序,主要负责协调调度微博爬虫的各个模块。其核心功能包括:

  (1)实现爬取微博数据的过程;

  (2) 控制其他模块的执行;

  (3)模拟浏览器登录,在页面请求中添加Headers信息;

  (4)控制微博访问频率,避免被反爬虫机制拒绝访问。

  2.1.2 网址管理器

  微博爬虫采用广度优先遍历策略提取所需数据。URL 管理器需要维护一个已爬取的 URL 列表和一个等待被爬取的 URL 列表。获取到新网址后,首先查看已爬取的网址列表。如果该网址不在列表中,则将其添加到等待抓取的网址列表中。

  2.1.3 页面加载器

  页

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线