#python #twitter #tweepy #twython
#python #Twitter #tweepy #twython
Вопрос:
Я пытался использовать Tweepy или Twython с API Twitter для поиска определенного хэштега, извлечения имен пользователей, которые пишут в твиттере с хэштегом, а затем посмотреть, сколько из этих пользователей подписаны друг на друга. Моя конечная цель — затем визуализировать соединения с NetworkX.
До сих пор мне удавалось искать хэштег и получать список пользователей, пишущих с ним в твиттере. Однако я не могу понять, как узнать, кто за кем следует в этом списке. Я, наконец, получил поиск дружбы для работы, но затем понял, что этот параметр ищет только друзей аутентифицированного пользователя (меня).
Вот последняя версия кода:
from twython import Twython
import tweepy
# fill these in from Twitter API Dev
CONSUMER_KEY = ''
CONSUMER_SECRET = ''
ACCESS_KEY = ''
ACCESS_SECRET = ''
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth, wait_on_rate_limit=True)
twitter = Twython(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_KEY, ACCESS_SECRET)
# Search for hashtag, limit number of users
try:
search_results = twitter.search(q='energy', count=5)
except TwythonError as e:
print e
test5 = []
for tweet in search_results['statuses']:
if tweet['user']['screen_name'] not in test5:
test5.append((tweet['user']['screen_name']).encode('utf-8'))
print test5
# Lookup friendships
relationships = api.lookup_friendships(screen_names=test5[0:5])
for relationship in relationships:
if relationship.is_following:
print("User is following", relationship.screen_name)
Спасибо!
Комментарии:
1. Я думаю, что для каждого запроса, содержащего более 5000 имен, вам нужно подождать 60 секунд до вашего следующего запроса.
Ответ №1:
С помощью Tweepy вы можете проверить, следует ли user_a
за user_b
ним, используя метод API.exists_friendship . Код будет выглядеть примерно так:
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth, wait_on_rate_limit=True)
is_following = api.exists_friendship(user_a, user_b)
Вы можете указать пользователей по id или screenname.
Кроме того, вы можете получить весь список подписчиков, используя метод API.followers_ids:
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth, wait_on_rate_limit=True)
user_b_followers = api.followers_ids(user_b)
is_following = user_a in user_b_followers
Такой подход имел бы больше смысла для больших сетей пользователей.
Имейте в виду, что при любом подходе вы сможете видеть только дружеские отношения, которые видны аутентифицированному пользователю. Это ограничение, введенное Twitter по соображениям конфиденциальности.
Комментарии:
1. Привет — Большое спасибо за ваш ответ. Однако параметр exists_friendship больше не существует в текущей версии, и когда я попробовал код followers_ids, он выдал ошибку и сказал мне, что я не могу этого сделать. У вас есть какие-либо другие мысли? Спасибо.
2. Вы пробовали API.show_friendship ?