Python: проверьте, следует ли пользователь Twitter за пользователем B

#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 ?