CoderCastrov logo
CoderCastrov
Data Science - Анализ данных

Парсинг твитов с помощью Twint — Не требуется ключ API

Парсинг твитов с помощью Twint — Не требуется ключ API
просмотров
3 мин чтение
#Data Science - Анализ данных

Простой учебник Twint, в котором вы можете попрактиковаться и легко следовать.

Знакомство с Twint

Я недавно столкнулся с Twint во время поиска способа извлечения данных из Twitter. Twint (Twitter Intelligence Tool) - это библиотека на языке Python, которая позволяет нам извлекать твиты из профилей Twitter без доступа к API Twitter. Вы будете удивлены, насколько прост и мощен Twint.

Как это работает?

Twint в основном основан на операторах поиска Twitter. Он позволяет нам извлекать твиты от определенных пользователей, связанные субъекты вашего интереса, определенные темы, хэштеги, местоположения или тренды. Даже чувствительную информацию, такую как адреса электронной почты или номера телефонов. Мощь инструмента зависит от вашего творчества.

Преимущества?

Сразу же стоит отметить, что Twint легок в использовании и очень быстр для начальной настройки. Он может получить почти все твиты, в то время как Twitter API ограничивается только последними 3200 твитами. Кроме того, вы можете использовать его сколько угодно - без регистрации в Twitter и ограничений по скорости.

Начнем!

Процесс установки прост. Я рекомендую вам склонировать репозиторий Twint на свой компьютер и установить все необходимые зависимости из файла requirements.txt.

git clone --depth=1 https://github.com/twintproject/twint.git
cd twint
pip3 install . -r requirements.txt

После завершения установки вы готовы к парсингу Twitter!

Перед тем, как мы начнем...

Я столкнулся с ошибкой RuntimeError: This event loop is already running, пытаясь собрать твиты с определенного пользователя. Чтобы предотвратить эту ошибку, нам нужно импортировать nest_asyncio и выполнить следующие строки кода.

# в случае, если у вас его нет в среде выполнения
!pip install nest_asyncioimport nest_asyncio
nest_asyncio.apply()

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

Давайте попробуем собрать твиты от Элона Маска, содержащие слово "doge".

Источник: Твиттер Элона Маска
import twint
# Настройка
c = twint.Config()
c.Username = "elonmusk"
c.Search = "doge"
c.Limit = 10# Запуск
twint.run.Search(c)

Username - это имя аккаунта Twitter, с которого мы хотим получить данные. Search - это ключевое слово (это также может быть список слов), которое мы ищем. Limit - это количество твитов, которые мы хотим получить.

Пример результата

В конфигурации Twint вы можете экспериментировать с различными параметрами. Например, вы можете выбрать интервал времени, в котором будет производиться сбор данных, добавив:

c.Since = '2020-01-01'
c.until = '2021-01-01'

Это означает, что мы хотим получить все твиты с 01.01.2020 по 01.01.2021.

Вы также можете указать тип данных, которые должны отображаться в результатах. Например, c.Images = True отображает твиты с изображениями, c.Videos = True отображает твиты с видео, c.Media = True отображает твиты с изображениями и видео.

Парсинг популярных твитов...

Мы можем отфильтровать наш запрос, выбрав минимальное количество взаимодействий.

c = twint.Config()
c.Username = "elonmusk"
c.Popular_tweets = **True**
c.Min_likes = 5000
c.Min_replies = 1000
c.Min_retweets = 100# Запуск
twint.run.Search(c)

Popular_tweets показывает популярные твиты. Min_likes, Min_replies и Min_retweets показывают твиты, которые соответствуют выбранным критериям по количеству лайков, ответов и ретвитов соответственно.

Сохранение твитов в DataFrame...

Мы также можем сохранить наш запрос с помощью pandas.

import pandas as pd
c = twint.Config()
c.Username = "elonmusk"
c.Search = "doge"
c.Pandas = True# Запуск
twint.run.Search(c)
elon_df = twint.storage.panda.Tweets_df

c.Pandas = True позволяет преобразовать данные в pandas dataframe, используя twint.storage.panda.Tweets_df.

Пример DataFrame

В целом

Как вы можете видеть, насколько легко настроить Twint - это мощный инструмент, который позволяет генерировать неограниченные данные из Twitter. Чтобы узнать больше о Twint, пожалуйста, посетите репозиторий Twint на GitHub.