안녕하세요~ Coding공부를 하면서 제가 직접 만든 코드를 앞으로 공유해려구 해요~
첫번째로 공유하는 코드는, 제가 Tweepy 모듈을 이용해서 만든 트위터 셀럽 트윗 크롤링입니다.
셀럽의 트위터내용도 받아오면서, 이미지까지 크롤링하는 것까지 만들어봤습니다.
저 역시 공부를 위해 만들어보고, 공유한거라 100% 완벽한 코드는 아닐수 있어요...
이상한 부분이 있거나, 보완할 부분이 보이신다면, 댓글로 말씀해주시면 좋을 것 같습니다~^^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
import tweepy
import datetime
import threading
import smtplib
from email.mime.text import MIMEText
import json
import os
def UCS(s):
return "".join((i if ord(i) < 10000 else '\ufffd' for i in s))
pic = []
max_tweets = 20
searched_tweets = []
last_id = -1
def check_time(curr_hour):
dt = datetime.datetime.now()
celeb_Tweet = []
if curr_hour != dt.hour:
print(dt)
curr_hour = dt.hour
consumer_key = "개인 Consumer_Key입력"
consumer_secret = "개인 Consumer_Secret입력"
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
access_token = "개인 Access_Token입력"
access_token_secret = "개인 Acecess_Token_Secret입력"
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
hour = 0
if curr_hour == 0:
hour = 24
else:
hour = curr_hour
while len(searched_tweets) < max_tweets:
count = max_tweets - len(searched_tweets)
try:
public_tweets = api.home_timeline()
if not public_tweets:
break
searched_tweets.extend(public_tweets)
last_id = public_tweets[-1].id
except tweepy.TweepError as e:
break
for i, tweet in enumerate(public_tweets):
print(i)
print(tweet.text)
print("\n")
celeb_Tweet.append("\n")
#여기서부턴 트위터 내에 있는 이미지를 크롤링
try:
celeb_Tweet.append("★{0}번째 트윗★\n".format(i+1))
celeb_Tweet.append(tweet.text + "\n")
print(len(tweet.extended_entities['media']))
for count in range(0, len(tweet.extended_entities['media'])):
if tweet.extended_entities['media'][count]['type'] == 'photo':
pic.append(tweet.extended_entities['media'][count]['media_url'])
celeb_Tweet.append("\n")
celeb_Tweet.append("▶▶▶{0}번째 사진:".format(count+1) + tweet.extended_entities['media'][count]['media_url'])
celeb_Tweet.append("\n")
except: #try 구문 안에서 NG가 나더라도, except구문으로 이동한다
celeb_Tweet.append("\n")
print('0')
mail_id = "메일 ID"
mail_pw = "메일 Password"
s = smtplib.SMTP("smtp.gmail.com", 587)
s.starttls();
s.login(mail_id, mail_pw)
msg = MIMEText("".join(celeb_Tweet)) ## 리스트를 문자열로 바꾸는 방법은 join함수를 이용
msg["Subject"] = "{0}월 {1}일, {2}시".format(dt.month, dt.day, dt.hour) + " " + "celeb Tweet"
s.sendmail(mail_id, "메일주소", msg.as_string())
s.close()
threading.Timer(1, check_time, args=[curr_hour]).start()
if __name__ == "__main__":
check_time(-1)
|
cs |
댓글 영역