[twitter spider] Python 使用推特開發者賬號應用+tweepy api,採集獲取推特資料
阿新 • • 發佈:2021-01-08
技術標籤:Python
# 申請 twitter 開發者帳號 & 應用 token consumer_key = "b5n...W1c" consumer_secret = "RGOGO...rbGvh" access_token = "10177...9Gwc5" access_token_secret = "0ugoL...WsgxW" # 填寫twitter提供的開發Key和secret + 提交你的Key和secret auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
# 獲取指定使用者資訊 api.get_user(username)
# Get the User object for twitter...
user = api.get_user('twitter')
# 使用者關注人
api.friends(username, count=10):
# 使用者粉絲
api.followers(username, count=10)
# 關鍵字搜尋
results = api.search(q=query, lang=language)
import tweepy def twitter_user(username): """ 獲取 twitter 使用者資料""" user = api.get_user(username, timeout=100) print('------------- User ---------') user_info = { 'id': user.id_str, 'nickname': user.name, 'location': user.location, 'screen_name': user.screen_name, 'intro': user.description, # emojo表情 處理 'protected': user.protected, 'fans_num': user.followers_count, 'focus_num': user.friends_count, 'create_time': str(user.created_at), 'verified': user.verified, 'tweet_num': user.statuses_count, 'photo': user.profile_image_url.replace('normal', '400x400'), # profile_image_url_https 'url': user.url, } # 下載頭像圖片 try: save_path = config.STATIC_PIC_PATH + '/twitter_user/' + user_info['id'] + '.png' urllib.request.urlretrieve(user_info['photo'], os.path.join(save_path)) except Exception as e: print('photo download Error: ', user_info, '\n', traceback.format_exc()) # print(json.dumps(user_info, indent=4, ensure_ascii=False)) return user_info
# 獲取指定使用者指定數量的發帖資料 tweets = api.user_timeline(username)
def twitter_tweet(username, count): """ twitter tweet data""" # tweets = api.user_timeline(username) for tweet in tweepy.Cursor(api.user_timeline, id=screen_name, tweet_mode='extended').items(count): tweet_id = tweet.id_str pub_time = str(tweet.created_at) tool = tweet.source repost_num = tweet.retweet_count like_num = tweet.favorite_count content = tweet.full_text lang = tweet.lang # 圖片 & 視訊 處理 (1~4四張照片 或 一個視訊/GIF) media = tweet.entities.get('media') # 引用/轉推/回覆 過濾 is_reply = tweet.in_reply_to_status_id_str # 回覆 -- 若是回覆,原始推文ID, 不是則為 None is_quote = tweet.is_quote_status # 引用 -- 是否引用推文 is_retweet = tweet.retweeted_status
# 獲取指定使用者指定帖子id之後的發帖資料
for tweet in tweepy.Cursor(api.user_timeline, id=username, since_id=since_id, tweet_mode='extended').items():
pass
參考:
https://github.com/tweepy/tweepy