Showing
2 changed files
with
80 additions
and
40 deletions
twitter/modify.md
0 → 100644
1 | +߸ |
1 | -#!/usr/bin/env python | ||
2 | -# coding: utf-8 | ||
3 | - | ||
4 | -# In[ ]: | ||
5 | - | ||
6 | - | ||
7 | import GetOldTweets3 as got | 1 | import GetOldTweets3 as got |
8 | from bs4 import BeautifulSoup | 2 | from bs4 import BeautifulSoup |
9 | 3 | ||
10 | import datetime | 4 | import datetime |
11 | - | ||
12 | -days_range = [] | ||
13 | - | ||
14 | -start = datetime.datetime.strptime("2019-11-14", "%Y-%m-%d") | ||
15 | -end = datetime.datetime.strptime("2019-11-15", "%Y-%m-%d") | ||
16 | -date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end-start).days)] | ||
17 | - | ||
18 | -for date in date_generated: | ||
19 | - days_range.append(date.strftime("%Y-%m-%d")) | ||
20 | -print("=== 설정된 트윗 수집 기간은 {} 에서 {} 까지 입니다 ===".format(days_range[0], days_range[-1])) | ||
21 | -print("=== 총 {}일 간의 데이터 수집 ===".format(len(days_range))) | ||
22 | - | ||
23 | import time | 5 | import time |
24 | - | ||
25 | -# 수집 기간 맞추기 | ||
26 | -start_date = days_range[0] | ||
27 | -end_date = (datetime.datetime.strptime(days_range[-1], "%Y-%m-%d") | ||
28 | - + datetime.timedelta(days=1)).strftime("%Y-%m-%d") # setUntil이 끝을 포함하지 않으므로, day + 1 | ||
29 | - | ||
30 | -# 트윗 수집 기준 정의 | ||
31 | -tweetCriteria = got.manager.TweetCriteria().setQuerySearch('한글') .setSince(start_date) .setUntil(end_date) .setMaxTweets(-1) | ||
32 | - | ||
33 | -# 수집 with GetOldTweet3 | ||
34 | -print("Collecting data start.. from {} to {}".format(days_range[0], days_range[-1])) | ||
35 | -start_time = time.time() | ||
36 | - | ||
37 | -tweet = got.manager.TweetManager.getTweets(tweetCriteria) | ||
38 | - | ||
39 | -print("Collecting data end.. {0:0.2f} Minutes".format((time.time() - start_time)/60)) | ||
40 | -print("=== Total num of tweets is {} ===".format(len(tweet))) | ||
41 | from random import uniform | 6 | from random import uniform |
42 | from tqdm import tqdm_notebook | 7 | from tqdm import tqdm_notebook |
43 | 8 | ||
44 | -# initialize | 9 | +def get_tweets(criteria): |
45 | -tweet_list = [] | 10 | + tweet = got.manager.TweetManager.getTweets(criteria) |
11 | + tweet_list = [] | ||
46 | 12 | ||
47 | -for index in tqdm_notebook(tweet): | 13 | + for index in tqdm_notebook(tweet): |
48 | 14 | ||
49 | # 메타데이터 목록 | 15 | # 메타데이터 목록 |
50 | username = index.username | 16 | username = index.username |
... | @@ -61,9 +27,82 @@ for index in tqdm_notebook(tweet): | ... | @@ -61,9 +27,82 @@ for index in tqdm_notebook(tweet): |
61 | # 휴식 | 27 | # 휴식 |
62 | time.sleep(uniform(1,2)) | 28 | time.sleep(uniform(1,2)) |
63 | 29 | ||
30 | +days_range = [] | ||
64 | 31 | ||
65 | -# In[ ]: | 32 | +start = datetime.datetime.strptime("2019-11-17", "%Y-%m-%d") |
66 | - | 33 | +end = datetime.datetime.strptime("2019-11-18", "%Y-%m-%d") |
34 | +date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end-start).days)] | ||
67 | 35 | ||
36 | +for date in date_generated: | ||
37 | + days_range.append(date.strftime("%Y-%m-%d")) | ||
38 | +print("=== 기본으로 설정된 트윗 수집 기간은 {} 에서 {} 까지 입니다 ===".format(days_range[0], days_range[-1])) | ||
39 | +print("=== 총 {}일 간의 데이터 수집 ===".format(len(days_range))) | ||
68 | 40 | ||
41 | +# 수집 기간 맞추기 | ||
42 | +start_date = days_range[0] | ||
43 | +end_date = (datetime.datetime.strptime(days_range[-1], "%Y-%m-%d") | ||
44 | + + datetime.timedelta(days=1)).strftime("%Y-%m-%d") # setUntil이 끝을 포함하지 않으므로, day + 1 | ||
69 | 45 | ||
46 | +my_key = input("검색할 키워드를 입력해주세요: ") | ||
47 | + | ||
48 | +while(True): | ||
49 | + temp1 = "현재 검색어는 " + my_key + "입니다. " | ||
50 | + print(temp1) | ||
51 | + print("기간은 기본적으로 최근 1일입니다.") | ||
52 | + print("1. 닉네임을 통한 검색") | ||
53 | + print("2. 키워드를 통한 검색") | ||
54 | + print("3. 시간을 통한 검색") | ||
55 | + print("4. 종료") | ||
56 | + userNum = int(input("무엇을 하시겠습니까?: ")) | ||
57 | + | ||
58 | + if userNum == 1: | ||
59 | + nick = input("검색할 닉네임을 입력해주세요: ") | ||
60 | + tweetCriteria = got.manager.TweetCriteria().setUsername(nick)\ | ||
61 | + .setQuerySearch(my_key)\ | ||
62 | + .setSince(start_date)\ | ||
63 | + .setUntil(end_date)\ | ||
64 | + .setMaxTweets(-1) | ||
65 | + get_tweets(tweetCriteria) | ||
66 | + elif userNum == 2: | ||
67 | + my_key = input("검색할 키워드를 입력해주세요: ") | ||
68 | + tweetCriteria = got.manager.TweetCriteria().setQuerySearch(my_key)\ | ||
69 | + .setSince(start_date)\ | ||
70 | + .setUntil(end_date)\ | ||
71 | + .setMaxTweets(-1) | ||
72 | + get_tweets(tweetCriteria) | ||
73 | + elif userNum == 3: | ||
74 | + user_start = int(input("시작일을 입력해주세요(yyyymmdd형태): ")) | ||
75 | + if(user_start < 20170000 or user_start > 20191200): | ||
76 | + print("최근 3년 이내만 검색가능합니다.") | ||
77 | + continue | ||
78 | + user_end = int(input("종료일을 입력해주세요(yyyymmdd형태): ")) | ||
79 | + if(user_end > 20191200): | ||
80 | + print("미래로 갈 수는 없습니다.") | ||
81 | + continue | ||
82 | + elif(user_end < user_start): | ||
83 | + print("시작일보다 작을 수 없습니다.") | ||
84 | + continue | ||
85 | + if(user_end - 8 > user_start): | ||
86 | + print("최대 1주일까지 검색이 가능합니다.") | ||
87 | + continue | ||
88 | + else: | ||
89 | + start_year = user_start // 10000 | ||
90 | + start_month = user_start // 100 - start_year * 100 | ||
91 | + start_day = user_start - start_year * 10000 - start_month * 100 | ||
92 | + end_year = user_end // 10000 | ||
93 | + end_month = user_end // 100 - end_year * 100 | ||
94 | + end_day = user_end - end_year * 10000 - end_month * 100 | ||
95 | + d1 = str(start_year) + "-" + str(start_month) + "-" + str(start_day) | ||
96 | + d2 = str(end_year) + "-" + str(end_month) + "-" + str(end_day) | ||
97 | + print("=== 현재 설정된 트윗 수집 기간은 {} 에서 {} 까지 입니다 ===".format(d1, d2)) | ||
98 | + print("=== 총 {}일 간의 데이터 수집 ===".format(user_end - user_start)) | ||
99 | + tweetCriteria = got.manager.TweetCriteria().setQuerySearch(my_key)\ | ||
100 | + .setSince(d1)\ | ||
101 | + .setUntil(d2)\ | ||
102 | + .setMaxTweets(-1) | ||
103 | + get_tweets(tweetCriteria) | ||
104 | + elif userNum == 4: | ||
105 | + break | ||
106 | + else: | ||
107 | + print("잘못된 입력입니다.") | ||
108 | + continue | ... | ... |
-
Please register or login to post a comment