{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 트위터에서 트윗 가져오기" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 필요한 패키지 가져오기:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "#!pip install tweepy\n", "import tweepy\n", "import re\n", "import os\n", "from tweepy import OAuthHandler" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 필요한 키 값들을 설정:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "tw_consumer_key = \"~~~\" # 각자 본인의 것으로 대체한다.\n", "tw_consumer_secret = \"~~~\" # 각자 본인의 것으로 대체한다.\n", "tw_access_token = \"~~~\" # 각자 본인의 것으로 대체한다.\n", "tw_access_secret = \"~~~\" # 각자 본인의 것으로 대체한다." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 토큰 초기화:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "auth = OAuthHandler(tw_consumer_key, tw_consumer_secret)\n", "auth.set_access_token(tw_access_token, tw_access_secret)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 트윗 가져오기:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "my_keyword = \"Trump\" # 서치 키워드.\n", "my_location = \"22.1568,89.4332,500km\" # 위치.위도경도\n", "n_tweets = 100 # 트윗개수." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "my_tweets = []\n", "api = tweepy.API(auth, timeout = 10) # 10초 후 timeout 적용.10초후 반응없음 끝냄\n", "for status in tweepy.Cursor(api.search, q = my_keyword + \" -filter:retweets\", lang=\"en\", result_type=\"recent\", geocode=my_location).items(n_tweets):\n", " my_tweets.append(status.text)\n", " \n", "#트윗100개모음" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "my_tweets #지저분함" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 트윗 클리닝 및 전처리 (option): 정규표현식" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "my_tweets_new = []\n", "for tweet in my_tweets:\n", " tweet = tweet.lower()\n", " tweet = re.sub(r\"^https://t.co/[a-zA-Z0-9]*\\s\", \" \", tweet) #이 패턴이 트윗에 있으면 스페이스로 변환~(특수문자로 조합한패턴있으면 스페이스 변환해 날림-불필요한거날림, )=불필요한거 지우겠다\n", " tweet = re.sub(r\"\\s+https://t.co/[a-zA-Z0-9]*\\s\", \" \", tweet)\n", " tweet = re.sub(r\"\\s+https://t.co/[a-zA-Z0-9]*$\", \" \", tweet)\n", " tweet = re.sub(r\"that's\",\"that is\",tweet)\n", " tweet = re.sub(r\"there's\",\"there is\",tweet)\n", " tweet = re.sub(r\"what's\",\"what is\",tweet)\n", " tweet = re.sub(r\"where's\",\"where is\",tweet)\n", " tweet = re.sub(r\"it's\",\"it is\",tweet)\n", " tweet = re.sub(r\"who's\",\"who is\",tweet)\n", " tweet = re.sub(r\"i'm\",\"i am\",tweet)\n", " tweet = re.sub(r\"she's\",\"she is\",tweet)\n", " tweet = re.sub(r\"he's\",\"he is\",tweet)\n", " tweet = re.sub(r\"they're\",\"they are\",tweet)\n", " tweet = re.sub(r\"who're\",\"who are\",tweet)\n", " tweet = re.sub(r\"ain't\",\"am not\",tweet)\n", " tweet = re.sub(r\"wouldn't\",\"would not\",tweet)\n", " tweet = re.sub(r\"shouldn't\",\"should not\",tweet)\n", " tweet = re.sub(r\"can't\",\"can not\",tweet)\n", " tweet = re.sub(r\"couldn't\",\"could not\",tweet)\n", " tweet = re.sub(r\"won't\",\"will not\",tweet)\n", " tweet = re.sub(r\"\\W\",\" \",tweet)\n", " tweet = re.sub(r\"\\d\",\" \",tweet)\n", " tweet = re.sub(r\"\\s+[a-z]\\s+\",\" \",tweet)\n", " tweet = re.sub(r\"\\s+[a-z]$\",\" \",tweet)\n", " tweet = re.sub(r\"^[a-z]\\s+\",\" \",tweet)\n", " tweet = re.sub(r\"\\s+\",\" \",tweet)\n", " my_tweets_new.append(tweet)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "i = 0\n", "for tw in my_tweets_new:\n", " i += 1\n", " print(str(i) + \" : \" + tw) #전처리 후 결과 가 깔끔함" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }