CoderCastrov logo
CoderCastrov
Твиттер

Как парсить твиты с помощью Twitter

Как парсить твиты с помощью Twitter
просмотров
7 мин чтение
#Твиттер

Подробное руководство по парсингу твитов с использованием API Twitter

Обзор

Изначально я написал статью в 2020 году, в которой рассказывалось о том, как парсить твиты с помощью Twitter. С тех пор многое изменилось, включая значительные изменения в общедоступном поисковом API Twitter, влияющие на открытые парсеры с открытым исходным кодом, выпуск Twitter API v2 в ноябре 2021 года, и недавнее удаление большинства их бесплатных API для парсинга. Это последующее руководство было написано, чтобы предоставить обновленные способы парсинга твитов и ответить на любые возможные вопросы о использовании Twitter API v2 для сбора данных.

Это руководство предназначено для быстрого и простого введения в парсинг твитов с помощью Twitter API V2. Я расскажу о настройке и двух распространенных случаях использования API.


Зачем парсить твиты

Социальные сети могут предоставлять информацию, которую обычно нельзя получить с помощью традиционных методов, таких как опросы, данные переписи населения или исследования, благодаря доступу к нефильтрованным мнениям людей. Это связано с тем, как используется социальные сети. Вы можете получить ответы на вопросы, к которым обычно не так легко получить доступ в таком масштабе.

Настройка

Прежде чем мы начнем, нам нужно настроить наши инструменты!

Настройка Tweepy

Мы используем Python для взаимодействия с официальным API Twitter. К счастью, есть библиотека Python под названием Tweepy, которая делает этот процесс максимально простым. Однако, чтобы использовать официальное API, вам также потребуется настроить учетную запись разработчика Twitter. Сначала мы рассмотрим этот процесс, а затем перейдем к настройке Tweepy.

Настройка учетной записи разработчика Twitter

Прежде чем продолжить, важно отметить, что вам нужно создать учетную запись Twitter или использовать уже существующую!

Чтобы настроить учетную запись разработчика Twitter, вам нужно перейти на страницу проектов и приложений портала разработчика Twitter. Там вам будет предложено информацию о приложении, которое вы хотите создать. Вас перенаправит на страницу, где вы должны заполнить информацию о приложении, которое вы хотите создать.

В конечном итоге вам будет предложено принять условия и соглашение. Это отправит подтверждение по электронной почте.

После этого заявка на приложение отправляется на рассмотрение, и сейчас это просто игра ожидания. Вам могут попросить заполнить дополнительную информацию о вашем приложении и его использовании.

Утверждение может занять несколько дней до, возможно, недели. Это займет время, и служба поддержки разработчиков свяжется с вами, если у них возникнут вопросы о вашей заявке.

После одобрения вам нужно будет получить свои токены, чтобы взаимодействовать с API. Но сначала вам нужно создать проект и приложение, чтобы получить токены. Вам нужно перейти внутри портала разработчика в Projects and Apps. Там вы создадите новый проект. Вас попросят указать свое использование.

Затем вам нужно добавить существующее приложение или создать новое приложение для вашего проекта.

После создания приложения вы должны наконец получить свои ключи и токены!

Если у вас уже есть проект и приложение, вам нужно перейти в Developer Portal > Projects & Apps > Overview > Имя приложения > Keys and Tokens, их нужно будет сгенерировать, если у вас нет к ним доступа. В этой статье вам понадобится сгенерировать и использовать Bearer Token.

Теперь, когда у вас есть готовые токены, мы можем перейти к настройке Tweepy!


Парсинг с помощью Tweepy

Настройка Tweepy

Tweepy - это библиотека Python для доступа к API Twitter. Есть несколько уровней доступа к API, которые предлагает Tweepy, как показано здесь, но они предназначены для очень конкретных случаев использования. Tweepy способен выполнять различные задачи помимо простого парсинга твитов. Однако в этой статье будет рассмотрено только использование API Twitter для сбора данных.

После получения вашего Bearer Token работа с Tweepy становится довольно простой.

Tweepy доступен для версий Python 3.7 и выше. В этой статье не будет рассматриваться установка Python, так как это было подробно описано здесь и можно найти в поисковике.

Что касается настройки Tweepy, это довольно простая команда Python. Вам просто нужно выполнить установку библиотеки Tweepy с помощью pip.

pip install tweepy

Также важно отметить, что я буду использовать библиотеку Pandas для хранения и изменения данных твитов.

Настройка учетных данных Tweepy

import tweepy

bearer_token = "XXXXXXXXX"

client = tweepy.Client(bearer_token)

Парсинг твитов определенного пользователя Twitter:

import tweepy
import pandas as pd

# Введите имя пользователя для парсинга твитов и название csv-файла
username = 'BillGates'
count = 10

try:
    # Получение идентификатора пользователя по имени пользователя
    user_id = client.get_user(username=username).data.id
    
    # Создание запроса с использованием параметров
    tweets = tweepy.Paginator(client.get_users_tweets, user_id, tweet_fields=["author_id", "created_at", "lang", "public_metrics"], expansions=["author_id"], max_results=100).flatten(limit = count)
    
    tweets_list = []
    
    # Извлечение информации из генератора твитов
    tweets_list = [[tweet.created_at, tweet.id, tweet.text, tweet.public_metrics["retweet_count"], tweet.public_metrics["like_count"]]for tweet in tweets]
    
    # Создание dataframe из списка твитов
    tweets_df = pd.DataFrame(tweets_list, columns=["Дата создания", "Идентификатор твита", "Текст", "Количество ретвитов", "Количество лайков"])
    
    # Преобразование dataframe в CSV-файл
    tweets_df.to_csv("{}-tweets.csv".format(username), sep=",", index = False)
    
    print("Парсинг завершен!")
    
except BaseException as e:
    print("Ошибка при выполнении парсинга:",str(e))

Парсинг твитов с использованием поискового запроса:

import tweepy
import pandas as pd

# Введите поисковый запрос для парсинга твитов и название csv-файла
keyword_search = 'Собаки'
count = 10

try:
    # Создание запроса с использованием параметров
    tweets = tweepy.Paginator(client.search_recent_tweets, keyword_search, tweet_fields=["author_id", "created_at", "lang", "public_metrics"], user_fields=["username"]).flatten(limit = count)
    
    tweets_list = []
    
    # Извлечение информации из генератора твитов
    tweets_list = [[tweet.created_at, tweet.id, tweet.text, tweet.public_metrics["retweet_count"], tweet.public_metrics["like_count"]]for tweet in tweets]
    
    # Создание dataframe из списка твитов
    tweets_df = pd.DataFrame(tweets_list, columns=["Дата создания", "Идентификатор твита", "Текст", "Количество ретвитов", "Количество лайков"])
    
    # Преобразование dataframe в CSV-файл
    tweets_df.to_csv("{}-tweets.csv".format(keyword_search), sep=",", index = False)
    
    print("Парсинг завершен!")
    
except BaseException as e:
    print("Ошибка при выполнении парсинга:",str(e))

Как я могу получить доступ к другой информации о твите?

В большинстве случаев приведенные выше примеры кода предоставляют доступ к большинству информации о твите, которую люди обычно используют. Однако возможно, вам понадобится другая доступная информация о твите.

По умолчанию объект твита, возвращаемый API V2, будет содержать только поля id и text. Все остальное должно быть указано с помощью параметра поля (field parameter) или расширения (expansion). Если вы хотите получить другую информацию о твите, доступную, как показано в словаре данных здесь, вам нужно включить это в раздел tweet_fields при вызове API.

Поля твита

Например, если я хочу получить язык твита, я могу изменить tweet_fields, чтобы включить его, как показано ниже.

tweets = tweepy.Paginator(client.search_recent_tweets, "dogs", tweet_fields=["lang"], user_fields=["username"]).flatten(limit = count)

Расширения

Не все данные твита доступны в полях твита. Дополнительная информация доступна через расширения твита.

Аналогично tweet_fields, вы можете добавить в метод Paginator, чтобы получить больше информации.

tweets = tweepy.Paginator(client.search_recent_tweets, "dogs", expansions=["author_id"], max_results=100).flatten(limit = count)

Это позволит получить дополнительную информацию для дальнейшего запроса.


Часто задаваемые вопросы

Является ли этот метод легальным для парсинга твитов?

Да, мы используем библиотеку Tweepy, которая использует официальное API Twitter для поиска твитов и получения данных. Это соответствует условиям использования Twitter, как показано в следующем отрывке из Условий использования Twitter на 10 августа 2023 года:

"... искать или пытаться получить доступ к Сервисам любыми средствами (автоматизированными или иными), кроме наших в настоящее время доступных, опубликованных интерфейсов, предоставленных нами (и только в соответствии с применимыми условиями)..."

Сколько твитов я могу спарсить?

На базовом уровне вы можете спарсить до 10 000 твитов в месяц за $100/месяц. Или, если вам нужно больше, вы можете вместо этого заплатить $5 000/месяц за парсинг до 1 миллиона твитов. Если ни один из этих вариантов не подходит для ваших потребностей, вы можете запросить уровень Enterprise или выше, если это необходимо.

Как я могу собирать твиты без программирования?

Есть несколько решений, таких как Scrape Hero, Stevesie или инструменты автоматизации парсинга веб-страниц, например Octoparse, которые требуют изучения использования приложения. Однако, с обновлением доступа к API Twitter, многие из этих инструментов были затронуты в том, как они могут получать эти данные и сколько возможно собрать.


Ссылки

GitHub с файлами парсера этого руководства: https://github.com/MartinKBeck/TwitterScraper/tree/master/ScraperV4

GitHub Tweepy: https://www.tweepy.org/

Руководство по использованию Twitter API v2 с помощью Tweepy на Python: https://dev.to/twitterdev/a-comprehensive-guide-for-using-the-twitter-api-v2-using-tweepy-in-python-15d9