嘿,
在本文中,我将向您展示如何下载,管理和可视化Twitter数据。我将为您提供连接到twitter API,下载并在空间中绘制用户定义的关键字所需的所有代码。
让’的开始!那么我们如何获得Twitter数据呢? Twitter允许用户通过他们的流媒体数据子集 Publich API。 要被允许下载它们,您必须是Twitter上的注册用户,然后只需执行以下步骤:
1.创建应用
创建Twitter应用: 转到网站,点击“Create New App”按钮,填写您的名称,使用说明和您的应用程序的网站。请仔细阅读免责声明。
2.下载R的twitteR软件包
第二步是打开R并下载twitteR软件包。这使您可以通过R使用Twitter流API,从而使生活变得更加轻松。只需安装并加载以下软件包:
install.packages("RCurl") install.packages("twitteR") library(RCurl) library(twitteR)
3.建立连接
回到 apps.twitter.com 页面上,单击您的应用,然后导航到 密钥和访问令牌。 下“Your Access Token”您应该能够看到以下内容:
访问令牌: 数字和字母的合并
访问令牌机密: 数字和字母的合并
这些令牌对于每个用户都是唯一的,您不应在公共场合公开它们。
现在回到R并使用以下代码建立与Twitter Stream API的连接:
connect2twitter = function() { # Set SSL certs globally options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl"))) reqURL = "//api.twitter.com/oauth/request_token" accessURL = "//api.twitter.com/oauth/access_token" authURL = "//api.twitter.com/oauth/authorize" consumerKey = 'PASTE YOUR KEY HERE' consumerSecret = 'PASTE YOUR SECRET HERE' twitCred = OAuthFactory$new(consumerKey=consumerKey,consumerSecret=consumerSecret,requestURL=reqURL,accessURL=accessURL,authURL=authURL) twitCred$handshake(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")) registerTwitterOAuth(twitCred) } connect2twitter() #execute function
只需插入您的使用者密钥和使用者密钥,然后运行该功能。请注意,以下代码在 堆栈溢出.
运行代码时,应打开一个新的浏览器窗口:单击授权应用并复制 密码 网站提供的内容并将其粘贴到R控制台中,然后按Enter。
如果控制台返回 真正, 你准备好了。
4.下载资料
关于下载Twitter数据的功能和方法,有两种。在本教程中,我们将使用 searchTwitter() 功能,可让您搜索带有关键字,坐标和日期的推文。代码如下:
鸣叫= searchTwitter("选举", n=1000, since="2015-01-01", geocode="37.78,-122.41,1000km", retryOnRateLimit=200) #create df out of query tweets.df = do.call("rbind",lapply(tweets,as.data.frame))
The code above will return a subset of 鸣叫containing the 字“elections” 被创造 从2015-01-01 到现在 在(拉丁美洲)37.78,-122.41,(这是旧金山) 半径1000公里。 n=1000 对您要获得多少条推文的限制。但是通常每个请求您只会收到20-80条推文,因此您不会’不必担心获取太大的数据集。
下面的另一行代码从搜索中创建了一个数据框,这使得数据处理变得更加容易。
如果您运行代码,则可能会收到警告消息,但不要’不要生气。它只是声明twitter API找不到请求的tweets数量,但是该函数仍然执行。
In doRppAPICall("search/tweets", n, params = params, retryOnRateLimit = retryOnRateLimit, : 1000 鸣叫were requested but the API can only return 81
5.在地图上的简单可视化
为了对地图上的推文进行快速而简单的可视化,我将使用基本的绘图功能和来自地图包的数据:
install.packages("地图") library(maps) #plots worldmap map('world') #plots tweets points(tweets.df$longitude,tweets.df$latitude, pch=20, cex=1, col="red")
结果将如下所示:
每个红点代表一条推文,由于我们将区域限制为旧金山,并且半径为1000公里,’所有点都在加利福尼亚州和周围的州并不奇怪。
结论
我希望这段简短的介绍对您中的某些人有所帮助,并向您展示了如何使用twitteR包通过R与Twitter API建立连接。
请注意,本教程仅为您提供有关如何下载地图上单个位置的数据的代码。因此,下周计划另外一个教程,我将向您展示如何立即自动下载整个世界的数据,以及如何使用ggplot2和网络映射服务(例如CartoDB)制作具有良好布局的地图。
尽快拜访我们!
干杯马丁
4条留言
您可以在这篇文章中发表评论。
嗨,马丁。
我只是在StudioR中遵循了您的代码。和我’您遇到了一些问题,无法获得与您相同的结果。
我发现有一个错误。您能帮我解决问题吗?
错误消息如下:
registerTwitterOAuth(twitCred)中的错误:
不再使用ROAuth来支持httr,请参阅?setup_twitter_oauth
版本:R 3.2.1 GUI 1.66 Mavericks构建
李艾琳 5年前
艾琳,对我来说也一样。
您是否找到了解决方案?
最好
朱拉 5年前
嗨,马丁,
I am trying to find the location from where 鸣叫are coming,so i followed your code
鸣叫<- searchTwitter('influenza',n=1000,since='2017-01-01',geocode="12.97.59,1000km",lang='en')
我将上面的命令转换为数据帧,并尝试执行它,我无法'找不到地图上的任何变化,没有红点。此外,当我尝试打印数据框时,我发现NA代替了纬度和经度列。请您帮我解决这个问题。
阿姆鲁莎 在4年前
how can i extract 鸣叫with replies plz?
阿米娜·巴里 2年前
发表回复