Tweepy это популярный пакет в Python, используемый студентами, исследователями и разработчиками для взаимодействия с API Twitter. Недавно Версия 4.0 этого пакета была выпущена Это поддерживает Twitter API V2 и трек академического исследования. В этом руководстве мы узнаем, как использовать различные функции, доступные в Twitter API V2, используя Tweepy.
Примечание: На момент написания этого руководства потоковые конечные точки в Twitter API V2 (например, фильтрованный поток и выборочный поток) еще не поддерживаются в твие, но будут добавлен в будущем Анкет
Полную документацию для Tweepy можно найти здесь
Предпосылка
Чтобы работать с API Twitter, вам необходимо иметь утвержденную учетную запись разработчика и ваши ключи API и токены для подключения к API. Узнайте больше о том, как получить эти ключи и токены Здесь Анкет
Чтобы работать с Tweepy, убедитесь, что на вашем компьютере установлен Python. затем , в терминальном забеге:
pip3 install tweepy
Примечание: Если у вас уже установлен Tweepy, вы можете обновить его до последней версии, т. Е. 4.0, запустив:
pip3 install tweepy --upgrade
Для всех примеров в этом разделе вам сначала необходимо импортировать библиотеку Tweepy, затем вам нужно будет инициализировать клиента, передавая ее токен для вашего носителя. После того, как у вас клиент инициализируется, вы будете готовы начать использовать различные функции в этой библиотеке.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME')
1. Поиск твитов за последние 7 дней
Чтобы искать твиты за последние 7 дней, вы можете использовать search_recent_tweets
функция доступна в Tweepy. Вам придется передать это Поисковый запрос Чтобы указать данные, которые вы ищете. В приведенном ниже примере мы ищем твиты с последних дней от
Твиттер ручка Suhemparack
и мы исключаем ретвиты, используя -ИТ: ретвит
Анкет
По умолчанию в своем ответе вы получите только идентификатор твита и текст твита для каждого твита. Если вам нужны дополнительные поля твита, такие как Context_annotations , created_at (время, когда твит был создан) и т. Д., Вы можете указать эти поля, используя параметр tweet_fields, как показано в примере ниже. Узнайте больше о доступных полях Здесь Анкет По умолчанию запрос возвращает 10 твитов. Если вы хотите более 10 твитов по запросу, вы можете указать, что использование max_results
параметр. Максимальные твиты за запрос составляют 100.
Примечание: Не все твиты связаны с контекстом, связанными с ними, поэтому в приведенном ниже примере мы печатаем только контекст_аннотации только в том случае, если они доступны для твита.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace with your own search query query = 'from:suhemparack -is:retweet' tweets = client.search_recent_tweets(query=query, tweet_fields=['context_annotations', 'created_at'], max_results=100) for tweet in tweets.data: print(tweet.text) if len(tweet.context_annotations) > 0: print(tweet.context_annotations)
2. Поиск твитов из полной архива публичных твитов
Если у вас есть доступ к Академическая исследовательская трасса продукта Вы можете получить твиты старше 7 дней, то есть из полного архива общедоступных твитов. Чтобы получить эти твиты, обязательно используйте токен предъявителя из приложения, подключенного к вашему академическому проекту на портале разработчика Twitter. Вы можете использовать search_all_tweets
Метод и передайте его поисковый запрос. Как показано в примере выше, вы также можете указать дополнительные поля твита и т. Д. что вы хотели бы вернуться для вашего запроса в API Twitter.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace with your own search query query = 'from:suhemparack -is:retweet' tweets = client.search_all_tweets(query=query, tweet_fields=['context_annotations', 'created_at'], max_results=100) for tweet in tweets.data: print(tweet.text) if len(tweet.context_annotations) > 0: print(tweet.context_annotations)
3. Получение твитов от полного архива публичных твитов для определенного периода времени
Если вы хотите получить твиты от полного архива в течение определенного периода времени, вы можете указать период времени, используя start_time
и end_time
параметры, как показано в примере ниже:
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace with your own search query query = 'from:suhemparack -is:retweet' # Replace with time period of your choice start_time = '2020-01-01T00:00:00Z' # Replace with time period of your choice end_time = '2020-08-01T00:00:00Z' tweets = client.search_all_tweets(query=query, tweet_fields=['context_annotations', 'created_at'], start_time=start_time, end_time=end_time, max_results=100) for tweet in tweets.data: print(tweet.text) print(tweet.created_at)
4. Получение более 100 твитов за раз с помощью paginator
Как видно в примерах выше, вы можете получить до 100 твитов за запрос. Если вам нужно больше 100 твитов, вам придется использовать Пагинтор и укажите предел, то есть общее количество твитов, которые вы хотите.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace with your own search query query = 'covid -is:retweet' # Replace the limit=1000 with the maximum number of Tweets you want for tweet in tweepy.Paginator(client.search_recent_tweets, query=query, tweet_fields=['context_annotations', 'created_at'], max_results=100).flatten(limit=1000): print(tweet.id)
5. Написание твитов в текстовый файл
В этом примере показано, как вы можете написать идентификаторы твитов для каждого твита, полученного для результата поиска, в текстовый файл. Обязательно замените Имя файла
с именем вашего выбора. Если вы хотите написать другие поля в текстовый файл, обязательно настройте приведенный ниже сценарий.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace with your own search query query = 'covid -is:retweet' # Name and path of the file where you want the Tweets written to file_name = 'tweets.txt' with open(file_name, 'a+') as filehandle: for tweet in tweepy.Paginator(client.search_recent_tweets, query=query, tweet_fields=['context_annotations', 'created_at'], max_results=100).flatten( limit=1000): filehandle.write('%s\n' % tweet.id)
6. Получение твитов с информацией пользователя, для каждого твита
В примерах до сих пор мы видели, как получить информацию о твите для твитов, которые мы искали. Однако, если вам нужна дополнительная информация, связанная с твитом, такая как информация пользователя, написавшего в Твиттере, вы можете использовать Расширение и передать его search_recent_tweets
функция
В этом примере нам нужна информация пользователя, поэтому значение для Расширение
что мы проходим, это Автор_ид
Анкет Кроме того, мы указам user_fields
что мы хотим возвращать, например, Profile_image_url и т. Д. Узнайте больше о доступных полях Здесь Анкет
Из ответа мы получим список пользователей из Включает
объект. Затем мы рассмотрим информацию пользователя для каждого твита, используя Автор_ид
твита.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace with your own search query query = 'covid -is:retweet' tweets = client.search_recent_tweets(query=query, tweet_fields=['context_annotations', 'created_at'], user_fields=['profile_image_url'], expansions='author_id', max_results=100) # Get users list from the includes object users = {u["id"]: u for u in tweets.includes['users']} for tweet in tweets.data: if users[tweet.author_id]: user = users[tweet.author_id] print(user.profile_image_url)
7. Получение твитов с информацией о медиа, для каждого твита
В этом примере нам нужна информация о медиа, поэтому значение для Расширение
что мы проходим, это Приложения. Media_keys
. Кроме того, мы указам media_fields
что мы хотим вернуть, например, preview_image_url и т. Д. Узнайте больше о доступных полях Здесь Анкет
Из ответа мы получим список средств массовой информации от Включает
объект. Затем мы рассмотрим информацию о среде для каждого твита, используя media_keys
с приложений для твита.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace with your own search query query = 'covid -is:retweet has:media' tweets = client.search_recent_tweets(query=query, tweet_fields=['context_annotations', 'created_at'], media_fields=['preview_image_url'], expansions='attachments.media_keys', max_results=100) # Get list of media from the includes object media = {m["media_key"]: m for m in tweets.includes['media']} for tweet in tweets.data: attachments = tweet.data['attachments'] media_keys = attachments['media_keys'] print(tweet.text) if media[media_keys[0]].preview_image_url: print(media[media_keys[0]].preview_image_url)
8. Поиск твитов с гео-меченными
Некоторые твиты имеют географическую информацию, связанную с ними. Конечные точки поиска в операторах поддержки API V2 Twitter V2, такие как место
, Place_country
, Bounding_box
, point_radius
и т.п. (Эти операторы в настоящее время доступны только в треке продукта академических исследований), которые позволяют вам получить эти гео-меченные твиты.
В приведенном ниже примере мы хотим, чтобы все твиты из страны США
, вот почему мы указываем его в нашем поисковом запросе, используя Place_country: US
оператор. Теперь, поскольку по умолчанию возвращаются только идентификатор твита и твит, мы должны указать тот факт, что мы хотим, чтобы GEO информация также в нашем ответе. Мы делаем это, передав Expansions = 'geo.place_id'
к search_all_tweets
Функция, и мы также указываем поля GEO, которые мы ищем, используя place_fields = ['place_type', 'geo']
Анкет
В нашем ответе мы получаем список мест из Включает
объект, и мы совпадаем с Place_id
Чтобы получить соответствующую информацию о гео, связанную с твитом (the place.full_name
в примере ниже)
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace with your own search query query = 'covid -is:retweet place_country:US' tweets = client.search_all_tweets(query=query, tweet_fields=['context_annotations', 'created_at', 'geo'], place_fields=['place_type', 'geo'], expansions='geo.place_id', max_results=100) # Get list of places from includes object places = {p["id"]: p for p in tweets.includes['places']} for tweet in tweets.data: print(tweet.id) print(tweet.text) if places[tweet.geo['place_id']]: place = places[tweet.geo['place_id']] print(place.full_name)
9. Получение количества твитов (объем) для поискового запроса
До сих пор мы видели примеры того, как получить твиты для поискового запроса. Однако, если вы хотите получить подсчет твитов (том) для поискового термина, вы можете использовать get_recent_tweets_count
функция Вы можете передать это поиск запрос
и укажите Гранулярность
Для агрегации данных например Если вы хотите ежедневного подсчета, почасовое количество или 15-минутное подсчет для поискового срока.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace with your own search query query = 'covid -is:retweet' counts = client.get_recent_tweets_count(query=query, granuarity='day') for count in counts.data: print(count)
Ответ будет выглядеть примерно так:
{'end': '2021-09-23T00:00:00.000Z', 'start': '2021-09-22T03:01:44.000Z', 'tweet_count': 142282}
10. Получение временной шкалы пользователя
Чтобы получить самые последние 3200 твитов с временной шкалы пользователя, мы можем использовать get_users_tweets
Метод и передайте его идентификатор пользователя. Мы также можем указать дополнительные поля, которые мы хотим, используя tweet_fields
и Расширение
(как показано в примерах выше).
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace user ID id = '2244994945' tweets = client.get_users_tweets(id=id, tweet_fields=['context_annotations','created_at','geo']) for tweet in tweets.data: print(tweet)
11. Получение упоминаний пользователя
Чтобы получить самые последние 3200 упоминаний для пользователя, мы можем использовать get_users_mentions
Метод и передайте его идентификатор пользователя. Мы также можем указать дополнительные поля, которые мы хотим, используя tweet_fields
и Расширение
(как показано в примерах выше).
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace user ID id = '2244994945' tweets = client.get_users_mentions(id=id, tweet_fields=['context_annotations','created_at','geo']) for tweet in tweets.data: print(tweet)
12. Получение последователей пользователя
Чтобы получить подписчиков пользователя, мы можем использовать get_users_followers
функционируйте и передайте его идентификатор пользователя. Если мы хотим дополнительных полей для пользовательского объекта, таких как profile_image_url
, мы можем указать тех, кто использует user_fields
параметр.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace user ID id = '2244994945' users = client.get_users_followers(id=id, user_fields=['profile_image_url']) for user in users.data: print(user.id)
13. Получение пользователей, которым следует пользователь
Чтобы получить список пользователей, которым следует пользователь, мы можем использовать get_users_following
функционируйте и передайте его идентификатор пользователя. Если мы хотим дополнительных полей для пользовательского объекта, таких как profile_image_url
, мы можем указать тех, кто использует user_fields
параметр.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace user ID id = '2244994945' users = client.get_users_following(id=id, user_fields=['profile_image_url']) for user in users.data: print(user.id)
14. Получение пользователей, которые любят твит
Чтобы получить список пользователей, которые любят твит, мы можем использовать get_liking_users
Функциональна и передайте его идентификатор твита. Если мы хотим дополнительных полей для пользовательского объекта, таких как profile_image_url
, мы можем указать тех, кто использует user_fields
параметр.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace Tweet ID id = '1441054496931541004' users = client.get_liking_users(id=id, user_fields=['profile_image_url']) for user in users.data: print(user)
15. Получение пользователей, которые ретвитнули твит
Чтобы получить список пользователей, которые ретвитнули твит, мы можем использовать get_retweeters
Функциональна и передайте его идентификатор твита. Если мы хотим дополнительных полей для пользовательского объекта, таких как profile_image_url
, мы можем указать тех, кто использует user_fields
параметр.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace Tweet ID id = '1441054496931541004' users = client.get_retweeters(id=id, user_fields=['profile_image_url']) for user in users.data: print(user)
16. Получение твитов, которые понравился пользователю
Чтобы получить список твитов, которые понравился пользователю, мы можем использовать get_liked_tweets
функционируйте и передайте его идентификатор пользователя. Если мы хотим дополнительные поля для объекта твита, таких как Context_annotations
, create_at
и т.п. Мы можем указать тех, кто использует tweet_fields
параметр.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace User ID id = '2244994945' tweets = client.get_liked_tweets(id=id, tweet_fields=['context_annotations','created_at','geo']) for tweet in tweets.data: print(tweet)
17. Твиты поиска с использованием твитов
В некоторых случаях, если у нас есть список идентификаторов твитов и хотим построить набор данных твитов для этих идентификаторов твитов, мы можем использовать get_tweets
Функция и передайте его список идентификаторов твитов. По умолчанию возвращаются только идентификатор твита и текст твита. Если мы хотим дополнительные поля твита, мы можем указать тех, кто использует tweet_fields
параметр.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace Tweet IDs ids = ['1409935014725177344', '1409931481552543749', '1441054496931541004'] tweets = client.get_tweets(ids=ids, tweet_fields=['context_annotations','created_at','geo']) for tweet in tweets.data: print(tweet)
18. Пользователи поиска используют идентификаторы пользователей
В некоторых случаях, если у нас есть список идентификаторов пользователей и хотим создать пользовательский набор данных для этих идентификаторов пользователя, мы можем использовать get_users
Функциональна и передайте его список идентификаторов пользователей. Если мы хотим дополнительные поля пользователя, мы можем указать тех, кто использует user_fields
параметр.
import tweepy client = tweepy.Client(bearer_token='REPLACE_ME') # Replace User IDs ids = ['2244994945'] users = client.get_users(ids=ids, user_fields=['profile_image_url']) for user in users.data: print(user.profile_image_url)
Это некоторые общие примеры работы с API V2 Twitter с использованием Tweepy. Поскольку Tweepy добавляет поддержку дополнительных конечных точек, мы обновим этот пост, чтобы включить примеры использования этих конечных точек.
Если у вас есть какие -либо вопросы или отзывы об этом руководстве, пожалуйста, не стесняйтесь обратиться ко мне в Twitter !
Также особое крик Хармон и участники Tweepy Package для поддержки Twitter API V2 и трека академического продукта.
Оригинал: “https://dev.to/twitterdev/a-comprehensive-guide-for-using-the-twitter-api-v2-using-tweepy-in-python-15d9”