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

Я пытался использовать либо Tweepy, либо Twython с Twitter API для поиска определенного хэштега, извлечения имен пользователей, чирикающих с хэштегом, а затем посмотреть, сколько из этих пользователей подписаны друг на друга. Моя конечная цель — затем визуализировать соединения с 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)

Спасибо!


person Honey Berk    schedule 01.10.2016    source источник
comment
Я думаю, что для каждого запроса более чем 5000 имен вам придется ждать 60 секунд до вашего следующего запроса.   -  person thesonyman101    schedule 01.10.2016


Ответы (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)

Вы можете указать пользователей по идентификатору или псевдониму.

Кроме того, вы можете получить весь список подписчиков, используя 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 из соображений конфиденциальности.

person bslawski    schedule 01.10.2016
comment
Привет -- Большое спасибо за ваш ответ. Однако параметр exists_friendship больше не существует в текущей версии, и когда я попробовал использовать код Followers_ids, он выдал ошибку и сообщил мне, что я не могу этого сделать. У вас есть другие мысли? Спасибо. - person Honey Berk; 02.10.2016
comment
Пробовали ли вы API.show_friendship? - person bslawski; 03.10.2016