프로그래밍/데이터분석

특정단어 언급한 트위터 데이터 가져오기

&+&& 2017. 6. 25. 03:04

 R Studio를 통해서 특정 단어를 언급한 트위터 데이터를 가져와서 워드클라우드를 만드는 걸 한 번 해볼 건데요. 이러한 작업을 R 스튜디오에서 하기 위해서는 몇 가지 사전 작업을 해줘야 합니다.(파이썬이나 다른 언어로 해도 마찬가지예요. 다만 방법 달라질 뿐이지.)

  사전 작업에 대한 내용은 이전 글(링크1, 링크 2)에서 했었기 때문에 여기에서는 간략하게 진행 순서만 얘기할게요. 내용이 좀 길어질 것 같으니까 일단 이번 글에서는 트위터에서 특정 단어를 언급한 내용을 가져오는 것만 먼저 해보죠.

  

1. Twitter 데이터를 분석하기 위한 사전 설정

가. Twitter App 설정

 - Twitter apps 페이지를 통해 APP을 생성(핸드폰 인증 필요)

 - Twitter apps 페이지를 통해 생성된 앱의 인증 키 확인

   : consumer key(API key) / consumer secret(API Secret)

 - Access Token 생성 및 확인

   : access_token / access_secret

나. R 필요 패키지 설치

 - twitteR 설치 : >install.packages("twitteR")

 - base64enc / ROAuth / RCurl도 위와 같은 방식으로 설치

  대략적으로 설명하면 위와 같은 방식이 되겠네요. 이제 트위터 데이터를 가져오기 위한 R Script를 작성합니다.(근데 twitteR만 설치한 상태에서도 데이터를 가져올 수는 있습니다. 나중에 필요하니까 일단 다 같이 설치하죠.)


2. 특정 단어를 언급한 트위터 내용을 가져오는 R Script 작성

 - File -> New File -> R Script 선택하여 새로운 스크립트 파일 생성 후 아래 소스 코드 입력


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
library(twitteR)
library(base64enc)
library(ROAuth)
library(RCurl)
 
consumer_key <- 'Tweet Apps 키값'
consumer_secret <- 'Tweet Apps 키값'
access_token <- 'Tweet Apps 키값'
access_secret <- 'Tweet Apps 키값'
 
setup_twitter_oauth(consumer_key,consumer_secret,access_token,access_secret)
 
search_string <- enc2utf8('아이코스') # 아이코스라는 단어가 언급된 트윗 검색
num_tweets <- 1000 # 가져올 숫자 지정 : 1000개
 
tweets <- searchTwitter(search_string, n=num_tweets, lang='ko')
 
tweets
cs

  R 스튜디오 상에서 Ctrl+A -> Ctrl+Enter로 전체 선택 후 실행하시면 아마 아래와 같은 내용이 표시가 될 텐데요.

  트위터 인증과정에서 표시되는 메시지입니다.

  데이터를 제대로 가져왔으면 일단 18행 tweets 명령을 통해 console 창에 데이터가 표시가 되고 있을 거구요. 


  R스튜디오 우측 상단 environment부분에 tweets라는 항목에도 표시가 됩니다. tweets의 좌측 화살표를 누르면 데이터를 확인이 가능해요.

  search_string의 경우 [#아이코스] or [아이코스] 둘 다 되는데, #아이코스의 경우에는 태그와 일치하는 경우에 검색이 됩니다. 당연히 #아이코스로 검색을 해야 원하는 키워드와의 일치도가 높겠죠. 근데 #아이코스로 검색을 하면 검색해서 나오는 내용이 너무 적네요. [#리지니]나 이런저런 다른 키워드도 검색을 해봤는데, 너무 광고 위주의 글들이 많기도 하구. 데이터 수집 자체가 좀 어렵군요.


  어쨌든 방법론적인 부분의 소개니까, 일단은 위와 같은 방법으로 트위터에서 특정 단어가 언급된 트윗을 가져올 수 있어요. 기본적으로 기간은 7일이니까 그 이상의 기간 데이터를 원한다면 주기적으로 데이터를 가져오는 방법 등을 사용해야 됩니다.