트위터 API, tweepy 사용하기
tweepy
1. API KEY 받기
Use Cases, Tutorials, & Documentation
Publish & analyze Tweets, optimize ads, & create unique customer experiences with the Twitter API, Twitter Ads API, & Twitter Embeds. Let's start building!
developer.twitter.com
먼저 트위터의 개발자사이트에서 api사용신청을하고 consumer_key, consumer_secret, access_token, access_token_secret를 받는 것 부터 시작합니다. (중요)
모두 받았으면 tweepy라는 api를 이용하겠습니다. 이용방법은 다음과 같습니다.
2. tweepy api connection
import tweepy
## 트위터 api와 연결
def connect_api():
consumer_key = 'consumer_key'
consumer_secret = 'consumer_secret'
access_token = 'access_token'
access_token_secret = 'access_token_secret'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
return api
print(connect_api())
>>> <tweepy.api.API object at 0x0000028DEA2EFC48>
위와같이 메모리에 객체가 저장되어있다고 출력되면 정상적으로 장동하는 것입니다.
3. username으로 타임라인 받아오기
def get_tweets(api, username):
tweets = api.user_timeline(username, tweet_mode='extended')
return tweets
api = connect_api()
bts_timeline = get_tweets(api, 'bts_official')
print(bts_timeline)
위의 함수로 bts의 타임라인을 가져올 수 있습니다. 결과물은 다음과 같습니다.
많은 정보들이 담겨있습니다. tweepy doc을 참조하면, 기본 20개의 타임라인에대한 정보를 가져옵니다. 위의 정보들을 자세히보면, description이라는 key도 보이고 img의 url도 보입니다. 여기서 우리는 필요한 정보만 추출할 수 있습니다. 자세한 정보는 tweepy의 doc에서 알 수 있습니다.
4. 트윗 텍스트로 받아오기
api = connect_api()
bts_timeline = get_tweets(api, 'bts_official')
i=1
for bts_tweet in bts_timeline:
print(f"{i}번째 트윗 : {bts_tweet.full_text}")
i += 1
full_text를 통해서 bts_official의 트윗을 받아오겠습니다. 결과는 다음과 같습니다.
5. 커서를 이용하여 받기
tweepy에서는 새로운 방식인 Cursor를 이용하는 방법을 권장하고있습니다.
def UserTimelineCursor(screen_name):
tweets = tweepy.Cursor(api.user_timeline, screen_name=screen_name, tweet_mode="extended")
return tweets
bts_timeline = UserTimelineCursor('@bts_official')
i=1
for bts_tweet in bts_timeline.items():
print(f"{i}번째 트윗 : {bts_tweet.full_text}")
i += 1
같은내용을 출력하는 것을 볼 수 있습니다.
6. 페이지별로 출력
def UserTimelineCursor(screen_name):
tweets = tweepy.Cursor(api.user_timeline, screen_name=screen_name, tweet_mode="extended")
return tweets
bts_timeline = UserTimelineCursor('@bts_official')
i=1
for bts_tweet in bts_timeline.pages():
for tweet in bts_tweet:
print(f"{i}페이지 : {tweet.full_text}")
i += 1
7. 이외에 여러기능들
## bts follower가져오기
print("User's Fllower")
user = api.get_user("bts_official")
print("User details:")
print(user.name)
print(user.description)
print(user.location)
print("Last 20 Followers:")
for follower in user.followers():
print(follower.name)
## 친구맺기
# api.create_friendship("bts_official")
## Method for Searches
print("Searching by keyword")
for tweet in api.search(q="한국", lang="en", rpp=10):
print(f"{tweet.user.name}:{tweet.text}")
## trend_search
print("Trend Search")
trends_result = api.trends_place(1)
for trend in trends_result[0]["trends"]:
print(trend["name"])
##
tweets = api.mentions_timeline()
for tweet in tweets:
tweet.favorite()
tweet.user.follow()
Tweepy doc에가면 더 많은 정보를 보실 수 있습니다.
Tweepy Documentation — tweepy 3.10.0 documentation
© Copyright 2009-2021, Joshua Roesslein Revision 5b2dd086.
docs.tweepy.org
'인공지능 > 데이터' 카테고리의 다른 글
Flask 시작하기 (0) | 2021.04.01 |
---|---|
weather API 사용하기 (0) | 2021.03.31 |
Scraping (Beautiful Soup) (0) | 2021.03.16 |
ORM (SQL Alchemy) (0) | 2021.03.16 |
SQL DB with Python 간단사용법 (0) | 2021.03.12 |
댓글