百科问答小站 logo
百科问答小站 font logo



如何利用 Twitter 开放者平台爬取 Twitter 数据? 第1页

  

user avatar   kang-jie-feng-15 网友的相关建议: 
      

当然有,但是抓取的历史数据数量有限制。这里分享一个用R语言抓取Twitter上气候变化相关言论的简单例子,涉及到推送时间趋势分析、推送位置分布和简单的情感分析。

在分析开始之前,你需要申请一个Twitter的开发者账号 (点击这里申请)。然后创建一个App,简要步骤是进入自己的Developer Portal,在Projects & Apps下创建一个App,记下自己的App名keysecret,我们就可以开始分析啦! 代码、说明和部分结果如下。

       #载入需要的包,其中: #rtweet用来抓取数据和分析,tidytext和dplyr整理数据,ggplot作图,syuzhet情感分析 library(rtweet) library(tidytext) library(dplyr) library(ggplot2) library(syuzhet) #先将Twitter抓取权限授权给R twitter_token <- create_token(   app = "你的App名",   consumer_key = "你的key",   consumer_secret = "你的secret",   set_renv = TRUE) #转到浏览器打开一个新的页面,点击授权成功后会提示: # “Authentication complete. Please close this page and return to R.”  #用search_tweets抓取包含“climate change”的最近1000条推文 #当然根据需要可以去除转发等,或者抓取特定用户的推文 #如果要抓取七天之前的历史数据,好像需要付费账号 climatetweet <- search_tweets("climate change", n= 1000) #查看一下抓下来的数据 head(climatetweet)     

会看到类似这样的数据形式,包含了发推文用户的ID、创建时间、用户名、推文内容和地理位置等:

       # A tibble: 6 x 90   user_id status_id created_at          screen_name text  source display_text_wi~ reply_to_status~   <chr>   <chr>     <dttm>              <chr>       <chr> <chr>             <dbl> <chr>            1 109614~ 13321517~ 2020-11-27 02:38:24 mapgirl61   "Why~ Twitt~              140 NA               2 326555~ 13321517~ 2020-11-27 02:38:18 WAmediaGrl  "Con~ Twitt~              144 NA               3 940038~ 13321517~ 2020-11-27 02:38:14 heartofwor~ ""I~ Twitt~              140 NA               4 434215~ 13321517~ 2020-11-27 02:38:11 Kerbear_xo  "Cli~ Twitt~              140 NA               5 232376~ 13321516~ 2020-11-27 02:38:07 MrGragg     "Cli~ Twitt~               89 NA               6 164160~ 13321516~ 2020-11-27 02:38:07 Marisol_Ma~ "A 7~ Twitt~              140 NA               # ... with 82 more variables: reply_to_user_id <chr>, reply_to_screen_name <chr>, is_quote <lgl>, #   is_retweet <lgl>, favorite_count <int>, retweet_count <int>, quote_count <int>...     

然后开始对数据进行分析:

       #看这1000条推送是什么时候发的,因为关于climate change的推文太多了,所以我们按分钟来作图 ts_plot(climatetweet, "mins")     
       #发推文的地理位置分布 climatetweet %>%    count(location, sort = TRUE) %>% #计算各个地点发推文的数量,并且排序   subset(location != "") %>% #去除空值,很多人在发推文的时候会隐去自己的地理位置   mutate(location = reorder(location, n)) %>%    head(20) %>% #选出排名前20的地点   ggplot(aes(x = location, y = n)) + #以各发推地点计数对地点作图   geom_col () +    coord_flip()     
       #看推文中最常出现的关键词 #通过正则表达式去掉一些不需要的字符,比如说“the”啊“to”啊之类的 climatetweet$text <- gsub("https\S*", "",climatetweet$text) climatetweet$text <- gsub("@\S*", "", climatetweet$text) climatetweet$text <- gsub("amp", "", climatetweet$text) climatetweet$text <- gsub("[
]", "", climatetweet$text) climatetweet$text <- gsub("[[:punct:]]", "", climatetweet$text) climatetext <- climatetweet %>% select(text) %>% unnest_tokens(word, text) climatetext <- climatetext %>% anti_join(stop_words) #作图 climatetext %>%    count(word, sort = TRUE) %>%   head(15) %>%   mutate(word = reorder(word, n)) %>%   ggplot(aes(x = word, y = n)) +   geom_col() +   coord_flip()     
       #类似地,看推文中最常出现的标签 #通过正则表达式去掉一些不需要的字符,比如说“the”啊“to”啊之类的 climatetweet$hashtags <- gsub("c\(", "",climatetweet$hashtags) climatetweet %>%    count(hashtags, sort = TRUE) %>%    mutate(hashtags = reorder(hashtags, n)) %>%    na.omit() %>%    head(10) %>%    ggplot(aes(x = hashtags, y = n)) +   geom_col() +    coord_flip()      
       #对推文内容进行情感分析 #把推文转换成ASCII码以进行分析 climatetweet_asc <- iconv(climatetweet, from="UTF-8", to="ASCII", sub="") #利用内置数据库对推文内容情感进行统计,看每条推文在各种情绪上的得分 score_df <- get_nrc_sentiment(climatetweet_asc) #统计各种情感的总得分并作图 score_stat <- data.frame("sentiment" = names(score_df), "score" = colSums(score_df)) ggplot(score_stat, aes(x = sentiment, y = score)) + geom_col()     

这是一个简单的例子,更复杂的实际研究可以参考这方面的学术研究。本文参考资料如下:

[1] Lesson 2. Twitter Data in R Using Rtweet: Analyze and Download Twitter Data

[2] A Guide to Mining and Analysing Tweets with R

[3] Twitter Sentiment Analysis and Visualization using R




  

相关话题

  加利福尼亚州在美国是一种怎样的存在? 
  如何看待推特封了伊朗官方号? 
  如何评价布鲁塞尔网民在Twitter上对川普(Donald Trump)斗图? 
  如何评价 BBC 称天宫一号为 junk? 
  有哪些算法惊艳到了你? 
  如何看待推特、脸书等多个社交媒体平台应印度政府要求删除近百条疫情负面信息?印度政府这么做有什么含义? 
  如何获取历史降雨数据? 
  如何看待“原谅宝”和推特上的“ChinaWakeUp”事件? 
  如果有第谷的数据,现在的机器学习,深度学习有办法学出开普勒三定律吗? 
  如何看待推特账号被永久封禁,特朗普称将建立自己的平台? 

前一个讨论
CPU的功耗和什么相关?为什么一个while(1);就可占满CPU的功耗?
下一个讨论
浙大学霸作息表刷屏网络,学霸可以自律到什么程度?大学生可以怎样规划自己的一天?





© 2024-05-17 - tinynew.org. All Rights Reserved.
© 2024-05-17 - tinynew.org. 保留所有权利