如何用R搜索Twitter

InfoWorld的|2020年1月23日

了解如何使用R和rtweet包搜索、过滤和排序tweet。这是跟踪会议标签的好方法。如果您想按照可选代码创建可点击的URL链接,请确保安装purrr包(如果它还没有安装在您的系统上)。

版权所有©2020足球竞彩网下载

嗨。我是IDG的Sharon Machlis,这里是关于R:追踪Twitter标签的第41集。

Twitter的是 - [R新闻的重要来源 - 特别是在会议期间,如用户和RStudio会议。而得益于R和rtweet包,我可以建立自己的工具来下载鸣叫轻松搜索,排序和筛选。让我们来看看,一步一步来。

首先,您想要安装和加载这个项目中任何您还没有的包:rtweet、reactable、glue、stringr、httpuv和dplyr。然后开始,加载rtweet和dplyr。

要使用rtweet,您需要一个Twitter帐户,因为您需要授权rtweet使用您的特定帐户凭证。这是因为你可以在15分钟内下载的tweet数量是有限制的。rtweet的作者迈克尔·卡尼(Michael Kearney)给了我们两个选择。超级简单的方法是请求一些tweet。如果您没有存储任何凭据,则会弹出一个浏览器窗口,要求您授权该请求。之后,授权令牌将存储在R环境文件中,这样以后就不必重新授权了!(你可以去rtweet.info查看另一种方法,那就是设置一个开发者项目并获得授权凭证。如果你经常使用rtweet,你可能会想这样做)。但是现在,最简单的方法!我马上就会讲到。

要搜索的鸣叫与特定主题标签,您可以使用(非常直观地命名)search_tweets()函数。它需要几arguments.First是查询:像#rstudioconf,#useR2020,#rstats。二是要找回鸣叫的次数。它默认为100,但这里就是你需要了解的关键字搜索鸣叫另一个重要的东西:不幸的是,除非你支付保费Twitter的API帐户只搜索追溯到约6〜9天。不能使用rtweet搜索今天发现从去年开始RStudio会议鸣叫。您将无法两周搜索会后让那些鸣叫。所以你要确保拯救你可能想在未来的旧的。

另一个search_tweets()参数是是否要包含retweets。出于我的目的,我没有,所以我把它设为FALSE。

您可以使用更多的参数来定制您的搜索,但是现在让我们做一个基本的搜索:带有#rstudioconf标签的200条tweet。看到授权有多简单了吗?并且rtweet自动在我的R环境文件中保存了一个令牌,所以我以后不需要再授权。

现在让我们看看结果。

一对夫妇的事情我跳出。其一是:我问两百鸣叫,但回来较少。有一对夫妇的为可能的原因。其中之一是,有可能无法在最后6-9天200个微博,因为我正在今年的会议开始之前这段代码。另一个原因是,Twitter可能已初步提取200个鸣叫,但过滤出锐推后,留少。

你可能另一件事已经注意到:对于每个鸣叫数据的90列!这是一个很大的指标。让我们来看看那些那些列名。

我平时最感兴趣的是那些有STATUS_ID,created_at,SCREEN_NAME,文本,FAVORITE_COUNT,retweet_count和urls_expanded_url。你可能会想为你分析一些列;但对于本演示中,我将只选择那些列。这将使得数据更容易一点,看看在屏幕上。

这是第一部分:获取第一批tweet。第二步是和他们一起做一些事情。

你可以对Twitter数据和r进行很多有趣的可视化和分析。但我是带着技术记者的帽子来做这个演示的。我想用一种简单的方式来看待那些我可能不知道的新奇事物。所以,我想看到一些会议上最受欢迎的推文。多亏了R,我才不用依赖Twitter的“流行”算法。我可以自己进行搜索,并为“热门”设置自己的标准。也许在会议进行的过程中搜索“今天”就可以了。或者对我感兴趣的特定话题进行过滤,比如“闪亮”或“咕噜”,按最喜欢或转发次数排序。

进行这类搜索和排序的最简单方法之一是使用sortable表。DT是一个很流行的包。但最近我一直在尝试另一种方法:reactable。

默认的reactable()有点乱。我提出了一组自己的默认值,通常会添加到表中。我来复习一下。

Filterable在每个列标题下面添加搜索过滤器。Searchable添加了一个搜索所有列的整个表搜索框。打开带边框、带条纹和高亮可以实现您所期望的功能:添加表边框、添加换行颜色“条纹”,如果将光标放在一行上,则高亮显示该行。showSortable在列名旁边添加小箭头图标,以便用户知道他们可以单击排序。我将defaultPageSize设置为25。showPageSizeOptions允许交互式地更改页面长度,然后定义将显示在下拉菜单中的页面大小选项。最后,我将每个defaultSortOrder设置为降序而不是升序。如果我点击转发或点赞的数量,我希望看到的是“从最多到最少”,而不是从最少到最多。

最后是列参数。这是一个包含每个列的列定义列表的列表。查看reactable帮助文件了解更多细节,但是这里我设置了两个列,使其具有默认的升序排序。对于文本列,我希望它显示html作为html,这样我可以添加可点击的链接;我想设置列的最小宽度(以像素为单位);我让它可以调整大小-这样我可以点击并拖动使它变宽或变窄。我关闭了favorite_count和reply_count的过滤框。这是因为不幸的是,reactable过滤器不理解这些列是数字,并将它们作为字符串进行过滤。不要担心:reactable对数字列进行了正确的排序,这只是那些过滤器盒的问题。与DT包相比,这是reacable的主要缺点。 But sorting numerically is enough for me for this purpose. So let’s go back and see what that looks like.

如果我点击FAVORITE_COUNT专栏中,我可以看到最热门。 我可以点击并拖动tweet文本列,使其变宽或变窄。

几件事情将使这一更为有用。我决定不鸣叫文本字段中显示的图像或视频,因为我在这里的目的是要扫描文本。但有时它是有益的,看看原来的鸣叫。所以,我创建了一个单独的列被添加到鸣叫的URL。这样我可以很容易地过滤的鸣叫包括网址。那如果我试图找到链接到演示文稿或资源鸣叫很方便。眼下,虽然,我不能点击看不到。我需要为我的R代码里面可点击链接的HTML。

让我回到我的tweets dataframe去做。提醒一下,下面是为表选择列的代码。现在让我用HTML添加列。对于tweet文本,我想在末尾添加一个小的可点击的东西,在那里我可以点击查看Twitter上的实际tweet。我决定写“空间大于符号大于符号”,尽管它可以是任何一个或多个字符。

如果我看一个鸣叫的格式。见鸣叫URL的格式?这是Twitter的点com斜线斜线名斜杠状态鸣叫ID。使用胶水,这将是这里的代码。如果你以前没有使用胶水,它是粘贴在一起的文本和变量值的大包。您可以使用引号中一个表达,并把所有的变量名要在括号进行评估。

第一行代码从状态ID和用户名创建到tweet的链接。创建TweetLink的下一行是大于大于链接的空格。最后,我创建了一个包含可点击链接的Tweet列。

最后,在这之后,我做了一个只有新的推文列的快速反应,以检查我的链接。它的工作原理!您可以做类似的事情,使url列可点击,尽管我不会演示这一点,以节省一点时间。

现在我要巩固我的代码,所以我不是一个鸣叫制作三个新列(我只是这样做是为了更容易地解释和显示的代码)。我会重新命名我的专栏,使之更人性化,并产生我的决赛桌。

要回顾一下:在这里,我创建从我想要的数据的原始鸣叫数据帧新的数据帧。我选择了一些列,然后在最后添加具有可点击的链接鸣叫栏,然后选择和重命名一些列。这是我的代码,以使从网址列可点击的链接。我不打算在这里,但你可以暂停视频来看看它。或者,头部与此视频相关的文章,所以你可以复制和粘贴代码。这是复杂一点比你想象的,因为该列是一个列表列;一些鸣叫包括不止一个URL。

这是我的格式化的表格有反应的。数据帧是我的第一个参数。其余的大部分,如果格式化和表的行为。

把所有这些代码在脚本并运行它,你也得为自己的可搜索的会议主题标签数据库!

需要记住的一件事是:如果您在会议期间关注一个会议标签,那么您需要提取足够的tweet来获得整个会议。所以在你的推特数据框中查看最早的日期。如果那个日期是在会议开始之后,请求更多的tweet。如果你的会议标签有超过18000条推文——就像当我还是跟踪消费电子展——你需要想出一些策略来获取整个设置。查看retryonratelimit理由search_tweets()如果你想收集一整套会议标签推回到6天或更少。

最后,确保你的数据保存到本地文件时,会议结束。一个星期后,你将不再有通过search_tweets()和Twitter的API访问这些鸣叫。

在一篇文章和一段视频中,我将演示如何将其转换为一个交互式的闪亮应用程序。

这就是本期节目的全部内容,感谢收看!R技巧,去做更多的与R在bit-dot-ly削减做更多页面,所有的小写字母,除了与R R .您还可以找到更多在YouTube IDG技术讨论频道播放列表,您可以订阅你千万不要错过一集。希望下次能见到你!
IDG.tv的精选视频