网站调用新浪微博内容(新浪微博的快速发展促进了基于微博数据的研究发展)
优采云 发布时间: 2022-03-05 12:10网站调用新浪微博内容(新浪微博的快速发展促进了基于微博数据的研究发展)
摘要:新浪微博的快速发展促进了基于微博数据的研究的发展。如何获取微博数据是开展相关研究的首要问题。本文分析了新浪微博数据的爬取方法,提出了一种基于Python的语言,直接设置登录用户的cookie信息,模拟浏览器访问新浪微博数据爬取方案,解决了不能使用新浪微博的问题开放平台API爬取微博数据的主要问题,实现的爬虫程序编程简单,性能稳定,能有效获取微博数据。
关键词:新浪微博;数据爬取;微博爬虫;Python
CLC编号: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]提供20多种接口,涵盖微博内容、评论、用户、关系等各种操作。从理论上讲,这种方法是最直接、最方便的方法。但新版微博开放界面存在一些局限性,对于小型研究团队或个人来说不是很方便,主要体现在以下几点:
(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) 模拟浏览器登录,在页面请求中添加header信息;
(4)控制微博访问频率,避免反爬虫机制拒绝访问。
2.1.2 网址管理器
微博爬虫采用广度优先遍历策略提取需要的数据,URL管理器需要维护已爬取的URL列表和等待爬取的URL列表。获取到新的URL后,首先查看已爬取的URL列表,如果该URL不在列表中,则将其添加到待爬取的URL列表中。
2.1.3 页面加载器
页面加载器根据爬虫调度器提供的头部信息和URL管理器提供的URL向微博服务器发送请求,获取请求的HTML页面。为了避免爬取过于频繁,导致微博服务器无法及时响应,或者被服务器的反爬机制拒绝访问,页面加载器采用了定时机制来限制页面加载频率。
2.1.4 HTML 解析器
HTML 解析器解析页面加载器提供的 HTML 页面以获取所需的数据。比如微博用户发布的博文内容、转发数、点赞数、评论数等。同时,HTML解析器会将新获取的URL反馈给爬虫根据需要调度程序。
2.1.5 数据导出器
数据导出器输出由 HTML 解析器解析的数据。输出数据为JSON格式,与使用新浪微博开放平台API获取的数据格式基本一致,保证了不同爬取方式获取的数据可以统一分析处理。
2.2 模拟浏览器登录
要访问微博数据,您必须先登录。可以使用爬虫程序模拟微博用户登录[7、8]。爬虫首先向微博用户服务器发送登录请求,然后接收服务器返回的密钥,然后结合服务器返回的用户名、密码和密钥生成验证信息并登录服务器。只要保持与服务器的会话会话,就可以从服务器获取微博数据进行进一步分析。
这种方法实现起来很复杂,并且需要了解服务器身份验证信息的细节。因此,采用了另一种比较简单的做法,即本文微博爬虫的做法。首先在浏览器中登录微博,然后使用浏览器提供的开发者工具查看请求页面的请求头信息。例如,使用火狐登录微博后,可以使用火狐提供的开发者工具查看如图2所示的请求头信息。
从图2可以看出,“Referer”的内容是访问微博的URL,其中“”是当前用户在微博上的唯一标识id;“Connection”的值为“keep-alive”,标识cookie永不过期;“Cookie”的内容是成功连接微博服务器后保存在本地的cookie,可以用来简单快捷地访问新浪微博。首先需要复制“”的内容,然后在Python中定义headers对象,设置Cookie和Connection,最后每次访问微博页面时将headers作为参数添加到Request对象中,获取微博页面. 这样,在cookie的有效期内,您就可以直接访问微博,提取您需要的数据。这样,
headers = {'Cookie': '', '连接': 'keep-alive'}