用Python挖掘Twitter数据:数据采集

2016-08-19 09:05:00 作者:Marco Bonzanini 翻译 分类 : 比特网

  这是7部系列中的第1部分,注重挖掘Twitter数据以用于各种案例。这是第一篇文章,专注于数据采集,起到奠定基础的作用。

  Twitter是一个流行的社交网络,用户可以共享称为tweets的类似SMS的短消息。用户在Twitter上分享想法、链接和图片,记者发表现场活动评论,企业改进产品和吸引客户等等。使用Twitter的不同的方式列表可能会很长,伴随着每天5亿的tweets,这里有大量的数据等着我们分析。

  这是一系列使用Python专门用于Twitter数据挖掘的文章中的第一篇。在第一部分中,我们将看到通过不同的方式来进行Twitter的数据收集。一旦我们建立好了一个数据集,在接下来的环节中,我们就将会讨论一些有趣的数据应用。

  注册应用

  为了能够访问Twitter数据编程,我们需要创建一个与Twitter的API交互的应用程序。

  第一步是注册一个你的应用程序。值得注意的是,您需要将您的浏览器转到http://apps.twitter.com,登录到Twitter(如果您尚未登录),并注册一个新的应用程序。您现在可以为您的应用程序选择一个名称和说明(例如“挖掘演示”或类似)。您将收到一个消费者密钥和消费者密码:这些都是应用程序设置,应始终保密。在您的应用程序的配置页面,你也可以要求获取一个访问令牌和访问令牌的密码。类似于消费者密钥,这些字符串也必须保密:他们提供的应用程序是代表您的帐户访问到Twitter。默认权限是只读的,这是我们在案例中需要的,但如果你决定改变您的许可,在应用中提供更改功能,你就必须再获得一个新的访问令牌。

  重要提示:使用Twitter的API时有速率限制,或者你想要提供一个可下载的数据集也会有限制,请参见: >

  您可以使用 Twitter提供的REST APIs与他们的服务进行交互。那里还有一群基于Python的客户,我们可以重复循环使用。尤其Tweepy是其中最有趣和最直白的一个,所以我们一起把它安装起来:

安装

  更新:Tweepy发布的3.4.0版本在Python3上出现了一些问题,目前被绑定在GitHub上还不能进行使用,因此在新的版本出来之前,我们一直使用3.3.0版本。

  更多的更新:Tweepy发布的3.5.0版本已经可以使用,似乎解决了上述提到的在Python3上的问题。

  为了授权我们的应用程序以代表我们访问Twitter,我们需要使用OAuth的界面:

界面

  现在的API变量是我们为可以在Twitter上执行的大多数操作的入口点。

  例如,我们可以看到我们自己的时间表(或者我们的Twitter主页):

时间表

  Tweepy提供便捷的光标接口,对不同类型的对象进行迭代。在上面的例子中我们用10来限制我们正在阅读的tweets的数量,但是当然其实我们是可以访问更多的。状态变量是Status() class的一个实例,是访问数据时一个漂亮的包装。Twitter API的JSON响应在_json属性(带有前导下划线)上是可用的,它不是纯JSON字符串,而是一个字典。

  所以上面的代码可以被重新写入去处理/存储JSON:

处理存储

  如果我们想要一个所有用户的名单?来这里:

名单

  那么我们所有的tweets的列表呢? 也很简单:

列表

  通过这种方式,我们可以很容易地收集tweets(以及更多),并将它们存储为原始的JSON格式,可以很方便的依据我们的存储格式将其转换为不同的数据模型(很多NoSQL技术提供一些批量导入功能)。

  process_or_store()功能是您的自定义实施占位符。最简单的方式就是你可以只打印出JSON,每行一个tweet:

打印

  流

  如果我们要“保持连接”,并收集所有关于特定事件将会出现的tweets,流API就是我们所需要的。我们需要扩展StreamListener()来定义我们处理输入数据的方式。一个用#python hashtag收集了所有新的tweet的例子:

案例

  根据不同的搜索词,我们可以在几分钟之内收集到成千上万的tweet。世界性覆盖的现场活动尤其如此(世界杯、超级杯、奥斯卡颁奖典礼等),所以保持关注JSON文件,看看它增长的速度是多么的快,并考量你的测试可能需要多少tweet。以上脚本将把每个tweet保存在新的行中,所以你可以从Unix shell中使用wc-l python.json命令来了解到你收集了多少tweet。

  你可以在下面的要点中看到Twitter的API流的一个最小工作示例:

  twitter_stream_downloader.py

  总结

  我们已经介绍了tweepy作为通过Python访问Twitter数据的一个相当简单的工具。我们可以根据明确的“tweet”项目目标收集一些不同类型的数据。

  一旦我们收集了一些数据,在分析应用方面的就可以进行展开了。在接下来的内容中,我们将讨论部分问题。

  简介:Marco Bonzanini是英国伦敦的一个数据科学家。活跃于PyData社区的他喜欢从事文本分析和数据挖掘的应用工作。他是“用Python掌握社会化媒体挖掘”( 2016月7月出版)的作者。

最近更新
科普

科普图集
从《中国互联网+指数报告(2018)》看数字经济

从《中国互联网+指数报告(2018)》看数字经济>>详情

“互联网+”的这些新变化,你知道吗?

“互联网+”的这些新变化,你知道吗?>>详情

邮件订阅

软件信息化周刊
比特软件信息化周刊提供以数据库、操作系统和管理软件为重点的全面软件信息化产业热点、应用方案推荐、实用技巧分享等。以最新的软件资讯,最新的软件技巧,最新的软件与服务业内动态来为IT用户找到软捷径。
商务办公周刊
比特商务周刊是一个及行业资讯、深度分析、企业导购等为一体的综合性周刊。其中,与中国计量科学研究院合力打造的比特实验室可以为商业用户提供最权威的采购指南。是企业用户不可缺少的智选周刊!
网络周刊
比特网络周刊向企业网管员以及网络技术和产品使用者提供关于网络产业动态、技术热点、组网、建网、网络管理、网络运维等最新技术和实用技巧,帮助网管答疑解惑,成为网管好帮手。
服务器周刊
比特服务器周刊作为比特网的重点频道之一,主要关注x86服务器,RISC架构服务器以及高性能计算机行业的产品及发展动态。通过最独到的编辑观点和业界动态分析,让您第一时间了解服务器行业的趋势。
存储周刊
比特存储周刊长期以来,为读者提供企业存储领域高质量的原创内容,及时、全面的资讯、技术、方案以及案例文章,力求成为业界领先的存储媒体。比特存储周刊始终致力于用户的企业信息化建设、存储业务、数据保护与容灾构建以及数据管理部署等方面服务。
安全周刊
比特安全周刊通过专业的信息安全内容建设,为企业级用户打造最具商业价值的信息沟通平台,并为安全厂商提供多层面、多维度的媒体宣传手段。与其他同类网站信息安全内容相比,比特安全周刊运作模式更加独立,对信息安全界的动态新闻更新更快。
新闻中心热点推荐
新闻中心以独特视角精选一周内最具影响力的行业重大事件或圈内精彩故事,为企业级用户打造重点突出,可读性强,商业价值高的信息共享平台;同时为互联网、IT业界及通信厂商提供一条精准快捷,渗透力强,覆盖面广的媒体传播途径。
云计算周刊
比特云计算周刊关注云计算产业热点技术应用与趋势发展,全方位报道云计算领域最新动态。为用户与企业架设起沟通交流平台。包括IaaS、PaaS、SaaS各种不同的服务类型以及相关的安全与管理内容介绍。
CIO俱乐部周刊
比特CIO俱乐部周刊以大量高端CIO沙龙或专题研讨会以及对明星CIO的深入采访为依托,汇聚中国500强CIO的集体智慧。旨为中国杰出的CIO提供一个良好的互融互通 、促进交流的平台,并持续提供丰富的资讯和服务,探讨信息化建设,推动中国信息化发展引领CIO未来职业发展。
IT专家网
IT专家新闻邮件长期以来,以定向、分众、整合的商业模式,为企业IT专业人士以及IT系统采购决策者提供高质量的原创内容,包括IT新闻、评论、专家答疑、技巧和白皮书。此外,IT专家网还为读者提供包括咨询、社区、论坛、线下会议、读者沙龙等多种服务。
X周刊
X周刊是一份IT人的技术娱乐周刊,给用户实时传递I最新T资讯、IT段子、技术技巧、畅销书籍,同时用户还能参与我们推荐的互动游戏,给广大的IT技术人士忙碌工作之余带来轻松休闲一刻。