什么人适合做服装设计师/惠州seo排名优化
twitter api使用
Twitter是有关R的重要新闻来源,尤其是在useR之类的会议期间! 和RStudio会议。 借助 R和rtweet软件包 ,您可以构建自己的工具来下载tweet,以便于搜索,排序和过滤。 让我们逐步看一下。
首先,您要安装尚未拥有的rtweet项目的任何软件包:rtweet,reactable,glue,stringer,httpuv和dplyr。 然后开始,加载rtweet和dplyr。
# If you need to install any of these:
# install.packages("rtweet")
# install.packages("reactable")
# install.packages("glue")
# install.packages("stringr")
# install.packages("httpuv")
# install.packages("dplyr")
# install.packages("purrr")
library(rtweet)
library(dplyr)
[ 在InfoWorld的“用R做更多”的视频系列中获取Sharon Machlis的R技巧 | 按任务,主题或程序包搜索“用R做更多”操作视频 ]
授权Twitter API
要使用rtweet,您需要一个Twitter帐户,以便您可以授权rtweet使用您的特定帐户凭据。 这是因为在15分钟的时间内可以下载的推文数量有限。
rtweet的撰写者Michael Kearney为rtweet用户提供了两种选择。 最简单的方法是简单地请求一些推文。 如果您的系统上没有存储凭据,则应打开浏览器窗口,要求您授权请求。 之后,授权令牌将存储在您的.Renviron文件中,因此您以后不必重新进行授权。
您可以转到rtweet.info查看另一种方法,该方法涉及设置Twitter开发人员帐户和一个新项目以生成授权凭证。 如果您将大量使用rtweet,则可能需要这样做。 但是,首先,更简单的方法就是更容易。
导入推文
要搜索带有特定主题标签(或不是主题标签的短语)的推文,请使用直观命名的s earch_tweets()
函数。 它需要几个参数,包括查询,例如#rstudioconf或#rstats; 是否要包含转发? 以及返回的推文数量。 该数字默认为100。
虽然您可以在15分钟内收到多达18,000条推文,但使用Twitter API搜索单词或短语时有一个重要限制:除非您为高级Twitter API帐户付费,否则搜索结果只能追溯六至九天。 与Twitter网站不同,您不能使用rtweet来搜索去年会议的tweet。 会议结束后两周您将无法搜索这些推文。 因此,您将需要确保保存将来拉出的推文,以备将来使用。
您可以使用更多参数来自定义搜索,但让我们从基本搜索开始:200个带有#rstudioconf主题标签的推文,不带转发。
tweet_df <- search_tweets("#rstudioconf", n = 200,
include_rts = FALSE)
如果您运行该代码并且从未使用过rtweet,则将要求您授权Twitter应用程序。
请注意,即使您要求发送200条推文,也可能会得到更少的回复。 原因之一是在过去六到九天内,您的查询可能没有200条推文。 另一个是Twitter最初可能确实提取了200条推文,但是在滤除了这些推文之后,留下的推文更少了。
tweet_df数据帧返回每个tweet的90列数据:
tweets的rtweet数据帧返回90列。
我通常最感兴趣的列是status_id,created_at,screen_name,text,favourite_count,retweet_count和urls_expanded_url。 您可能需要其他一些列来进行分析; 但在本教程中,我将仅选择这些列。
搜索,过滤和分析您的推文
您可以使用Twitter数据和R进行很多有趣的可视化和分析。其中一些内置在rtweet中 。 但是我是戴着技术记者的帽子写这篇教程的。 我想要一种简单的方法来查看我可能不知道的新奇事物。
会议中最受欢迎的推文可能对此有所帮助。 而且,如果我使用rtweet和Twitter API,则不必依靠Twitter的“流行”算法。 我可以进行自己的搜索并为“受欢迎”设置自己的条件。 我可能想仅在会议进行的当日开始搜索热门推文,或者过滤我感兴趣的特定主题(如“闪亮”或“ purrr”),并按喜欢或转发最多的主题进行排序。
进行此类搜索和排序的最简单方法之一是使用可排序表。 DT是为此的一种流行软件包。 但是最近我一直在尝试另一个:reactable。
默认的reactable()
有点类似。 例如:
tweet_table_data <- select(tweets, -user_id, -status_id)
library(reactable)
reactable(tweet_table_data)
这段代码产生一个如下表:
默认的可响应推文表
但是我们可以添加一些自定义项,例如:
reactable(tweet_table_data,
filterable = TRUE, searchable = TRUE, bordered = TRUE,
striped = TRUE, highlight = TRUE,
defaultPageSize = 25, showPageSizeOptions = TRUE,
showSortable = TRUE, pageSizeOptions = c(25, 50, 75, 100, 200), defaultSortOrder = "desc",
columns = list(
created_at = colDef(defaultSortOrder = "asc"),
screen_name = colDef(defaultSortOrder = "asc"),
text = colDef(html = TRUE, minWidth = 190, resizable = TRUE),
favorite_count = colDef(filterable = FALSE),
retweet_count = colDef(filterable = FALSE),
urls_expanded_url = colDef(html = TRUE)
)
)
结果是一个看起来像这样的表:
定制的React式推文表。
配置您的可React数据表
在上面的代码块中, filterable = TRUE
参数在每个列标题下方添加了搜索过滤器,而searchable
在右上方添加了整个表搜索框。 启用有bordered
,有striped
和highlight
功能可以实现预期的效果:添加表格边框,添加交替行的颜色“条纹”,如果将光标放在行上则突出显示行。
我将defaultPageSize
设置为showPageSizeOptions
参数使我可以交互地更改页面长度,然后定义页面大小选项,这些选项将显示在表格下方的下拉菜单中(在屏幕快照中不可见)。 showSortable
参数在列名旁边添加小箭头图标,以便用户知道可以单击以进行排序。 然后将每列的defaultSortOrder
设置为降序而不是升序。 因此,如果我单击转发或喜欢的次数列,我将看到这至少是一样,不是最少。
最后,有columns
参数。 这是一个包含每个列的列定义的列表。 查看可React的帮助文件,以获取有关其他可用选项的更多详细信息。 在此示例中,我将created_at和screen_name列设置为默认的升序排列。 对于文本列,我将其设置为将HTML显示为HTML,以便可以添加可点击的链接。 我还将最小列宽设置为190像素,并调整了列的大小,以便用户单击并拖动以使其更宽或更窄。
我还关闭了favorite_count和Reply_count的筛选器框。 不幸的是,这是因为,可React的过滤器无法理解列何时为数字,而是会将其过滤为字符串。 尽管可React式正确地对数字列进行排序 ,但过滤器盒还是有问题的。 与DT包相比,这是可React的主要缺点:DT了解列类型并相应地过滤。 但是,对于我来说,数字排序就足够了。
您可以查看本文顶部的视频,以了解对列进行排序或使tweet文本列变宽或变窄时的外观。
使数据表更有用
有几件事将使此表更有用。 此代码不显示推文中包含的图像或视频。 很好,因为我的目的是扫描文本,而不是重新创建Twitter应用程序。 但这意味着有时候查看原始推文来查看照片,视频或评论会很有帮助。
我认为在每个tweet文本的末尾添加一个小的可单击的内容很方便,您可以单击该内容以在Twitter上查看实际的tweet。 我决定>>
尽管它可以是任何字符。
要构造URL,我需要知道一条推文的格式,如果您在Twitter网站上查看任何推文,则可以看到https://twitter.com/username/status/tweetID。
使用胶水包装 ,将被渲染为:
glue::glue("https://twitter.com/{screen_name}/status/{status_id}")
如果您以前没有使用过胶水 ,那么它是将文本和变量值粘贴在一起的好工具。 在上面的代码中,括号之间的任何变量名都将被求值。
我在推文文本后创建带有可点击链接的列的完整代码:
Tweet = glue::glue("{text} <a href='https://twitter.com/{screen_name}/status/{status_id}'>>> </a>")
以及为交互式表格创建数据框的代码:
tweet_table_data <- tweet_df %>%
select(user_id, status_id, created_at, screen_name, text, favorite_count, retweet_count, urls_expanded_url) %>%
mutate(
Tweet = glue::glue("{text} <a href='https://twitter.com/{screen_name}/status/{status_id}'>>> </a>")
)%>%
select(DateTime = created_at, User = screen_name, Tweet, Likes = favorite_count, RTs = retweet_count, URLs = urls_expanded_url)
我还想从“ URL”列中创建可点击的链接,该列现在只是文本。 这有点复杂,因为URL列是列表列,因为某些推文包含多个URL。
我敢肯定,有一种更优雅的方法可以从纯文本URL的列表列中创建可点击的链接,但是下面的代码有效。 首先,如果没有URL,一个URL或两个或多个URL,我将创建一个函数来生成HTML:
make_url_html <- function(url) {
if(length(url) < 2) {
if(!is.na(url)) {
as.character(glue("<a title = {url} target = '_new' href = '{url}'>{url}</a>") )
} else {
""
}
} else {
paste0(purrr::map_chr(url, ~ paste0("<a title = '", .x, "' target = '_new' href = '", .x, "'>", .x, "</a>", collapse = ", ")), collapse = ", ")
}
}
如果有两个或多个URL,则对URL值运行purrr::map_chr()
,以便每个URL都有自己HTML;否则,请执行以下操作。 然后将它们粘贴在一起,然后将它们折叠成单个字符串以显示在表格中。
函数正常工作后,我再次使用purrr::map_chr()
遍历该列中的每个项目:
tweet_table_data$URLs <- purrr::map_chr(tweet_table_data$URLs, make_url_html)
如果您不了解这部分,请不要担心,因为与rtweet和reactable相比,它实际上更多的是关于purrr和list列的。 而且没有必要搜索和分类推文。 您可以随时单击原始推文,并在其中查看可点击的链接。
最后,我可以在新的tweet表数据上运行自定义的reactable()
代码:
reactable(tweet_table_data,
filterable = TRUE, searchable = TRUE, bordered = TRUE, striped = TRUE, highlight = TRUE,
showSortable = TRUE, defaultSortOrder = "desc", defaultPageSize = 25, showPageSizeOptions = TRUE, pageSizeOptions = c(25, 50, 75, 100, 200),
columns = list(
DateTime = colDef(defaultSortOrder = "asc"),
User = colDef(defaultSortOrder = "asc"),
Tweet = colDef(html = TRUE, minWidth = 190, resizable = TRUE),
Likes = colDef(filterable = FALSE, format = colFormat(separators = TRUE)),
RTs = colDef(filterable = FALSE, format = colFormat(separators = TRUE)),
URLs = colDef(html = TRUE)
)
)
如果您一直在遵循,那么您应该拥有自己的交互式表格,该表格可以搜索,排序和过滤会议或主题推文。
[ 通过InfoWorld的机器学习和分析报告时事通讯来掌握机器学习,人工智能和大数据分析的最新进展 ]
推文收集者提示
要记住的一件事:如果您在会议期间关注会议主题标签,则将需要拉足够多的推文来获取整个会议。 因此,请在您的tweet数据框中检查最早的日期。 如果该日期是会议开始之后的时间,则请求更多推文。 如果您的会议主题标签有18,000条以上的推文(就像我在追踪CES时所发生的那样),则您需要提出一些策略以获取完整的推文。 如果您想收集6天或更短时间内收集的整个18,000多个会议主题标签推文,请查看search_tweets()
的retryonratelimit
参数。
最后,请确保在会议结束时将数据保存到本地文件中! 一周后,您将不再可以通过search_tweets()
和Twitter API访问这些推文。
并查看额外的“用R做更多”插曲,以了解如何将此Twitter跟踪应用程序转换为交互式Shiny应用程序 。
有关R的更多技巧,请访问https://bit.ly/domorewithR上的“用R进行更多操作” 页面或IDG TECHtalk YouTube频道上的“ 用R进行更多操作”播放列表 。
翻译自: https://www.infoworld.com/article/3515712/how-to-search-twitter-with-rtweet-and-r.html
twitter api使用