Представляем Twitter Toolbox — комплексный набор, предназначенный для упрощения сбора, предварительной обработки и анализа данных из Twitter.

В последнее время Twitter API стал довольно дорогим вариантом для сбора данных с платформы из-за некоторых новых изменений. Но не волнуйтесь. С помощью хорошо спланированной стратегии парсинга вы можете обойти эти препятствия, воспользоваться преимуществами запросов без каких-либо ограничений скорости и даже собрать некоторые исторические данные — все, что вы можете получить только с помощью премиум-API Твиттера. , что обойдется вам в крутые 5000 долларов в месяц. Но эй, я прикрою твою спину. В этом посте я расскажу об гениальном, но простом методе очистки данных Twitter. Мы углубимся в особенности, такие как временной диапазон, пользователь, хэштег и парсинг на основе списка слов. Приготовьтесь погрузиться!

Введение: возможности Twitter Toolbox

Панель инструментов Twitter является частью новой серии инструментов, предназначенных для анализа данных с использованием данных Twitter. Этот набор инструментов был задуман в ответ на недавние изменения в API и внешнем интерфейсе Twitter после приобретения Илона Маска. Учитывая, что несколько существующих библиотек не обновлялись и не поддерживались, я решил создать свой собственный набор инструментов Twitter, предлагающий своевременное универсальное решение для анализа данных в Twitter. Я постараюсь держать его в курсе последних изменений в Твиттере, чтобы обеспечить бесперебойный процесс извлечения данных.

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

Возможности набора инструментов

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

  1. Сбор данных включает в себя такие функции, как потоковая передача данных и очистка, вызовы API и обработка или обезвоживающие твиты. Эти процессы позволяют извлекать широкий спектр данных из Twitter в режиме реального времени или из исторических записей.
  2. Предварительная обработка. Предварительная обработка данных необходима для обеспечения точности и надежности последующего анализа. Наш набор инструментов обеспечивает очистку данных, фильтрацию языков, маркировку данных и функции создания групп. Эти функции позволяют уточнить набор данных в соответствии с вашими конкретными потребностями.
  3. Обработка естественного языка (NLP). Сюда входит анализ содержания твитов для извлечения значимой информации. Набор инструментов включает в себя анализ настроений, анализ эмоций, анализ темы и распознавание именованных объектов. Эти инструменты помогают понять общественное мнение, выявить эмоциональные тенденции, определить ключевые темы и распознать такие объекты, как организации или отдельные лица.

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

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

Давайте изучим функциональность парсинга

Настройка панели инструментов

Чтобы использовать Twitter Toolbox, загрузите или клонируйте проект из репозитория GitHub и убедитесь, что в вашей системе установлены все необходимые зависимости. Для функции парсинга данных требуются следующие библиотеки:

  • селен
  • панды
  • запрос
  • python-dotenv
  • разбор аргументов

Вам также потребуется установить chromedriver для эмуляции и навигации по веб-сайту. Инструкции по установке предоставляются как для систем Mac, так и для Linux.

На Mac:

# Use homebrew
brew install cask chromedriver
# Verify that the installation goes throught
chromedriver --version
# Get path of chromedriver
brew info chromedriver

В Linux я предоставил скрипт оболочки, который вам просто нужно запустить, для этого:

# Make the script executable (at the base of the project)
chmod +x chromedriver.sh
# Run the script
./chromedriver.sh
# Verify installation
chromedriver --version
# Get path
which chromedriver

Прежде чем углубляться в использование, убедитесь, что ваша среда настроена правильно. Панель инструментов требует, чтобы вы предоставили свои учетные данные для подключения и извлечения данных (поскольку пользователи, не прошедшие проверку подлинности, не могут получить доступ к поиску в Твиттере из-за недавних изменений). После получения сохраните эти учетные данные в файле '.env' в вашем рабочем каталоге.

.env файл:

USERNAME = "YourUsername"
PASSWORD = "YourPassword"
EMAIL = "[email protected]"
CHROME_DRIVER_PATH = "YourChromedriverPath"

Использование Toolbox: Соберите данные

Чтобы извлечь данные из Twitter, запустите файл run-scraping.py, расположенный в каталоге src/dataAcquisition:

python3 src/dataAcquisition/run-scraping.py --e .env --a elonmusk --s 2023-01-01

В этой команде аргумент --env or --e указывает файл среды, в котором хранятся ваши учетные данные, --start or --s дату начала очистки, --from_account or --a учетную запись для исследования.

Например, предыдущая команда будет собирать твиты Элона Маска с 1 января 2023 года по сегодняшний день.

Команду можно настроить со следующими необязательными аргументами:

  • --end or --e : Дата окончания очистки (по умолчанию дата окончания — сегодня)
  • --interval --i : Интервал между скрейпингом (по умолчанию 1 день — поиск после другого).
  • --headless: Запустить скрипт без пользовательского интерфейса google chrome.
  • --only_id : сохранен только tweet_id собранного твита

Существует несколько методов и методов поиска для сбора твитов:

  • По учетной записи: с использованием аргумента --from_account or --a
  • По хэштегу: Использование аргумента --hashtag or --h
  • Словом: использование аргумента --word or --w

Примечание. Одновременно может выполняться только один тип поиска.

Например, чтобы собрать данные за 2021 год по #covid:

python3 src/dataAcquisition/run-scraping.py --e .env --h covid --s 2021-01-01 --e 2022-01-01

Или собрать образец англоязычных твитов за определенную дату (целевой твит, используя слово «вы»).

python3 src/dataAcquisition/run-scraping.py --e .env --w you --s 2023-01-01 --e 2023-01-02

Понимание вывода

Когда процесс парсинга завершится, он выведет файл .csv в каталоге data/scraping, в имени которого указана текущая дата:

data/scraping/<user>/<user>_<start>_<end>.csv
data/scraping/<hashtag>/<hashtag>_<start>_<end>.csv
data/scraping/<word>/<word>_<start>_<end>.csv

Структура данных следующая:

tweet_id,user_id,timestamp,text

Эти столбцы позволяют вам выполнять широкий спектр анализов собранных вами данных твитов.

  • tweet_id: уникальный идентификатор каждого твита.
  • user_id: уникальный идентификатор учетной записи Twitter, опубликовавшей твит.
  • created_at: Отметка времени, указывающая, когда твит был опубликован.
  • text: Содержание твита.

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

Обработка ошибок и прерываний

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

В случае прерывания клавиатуры (CTRL+C) сценарий обеспечит плавный выход, закрыв CSV-файл перед остановкой, чтобы обеспечить целостность данных.

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

Примечание. Если у вас возникнут какие-либо проблемы с кодом, не стесняйтесь опубликовать тикет на GitHub или прокомментировать эту статью.

Реальные сценарии использования

Этот функционал можно использовать по-разному:

  1. Мониторинг бренда. Компании могут отслеживать упоминания своего бренда или продуктов в режиме реального времени, что позволяет им оперативно реагировать на запросы или жалобы клиентов.
  2. Анализ тенденций. Собирая большое количество твитов с течением времени, ученые и аналитики данных могут выявлять и анализировать актуальные темы.
  3. Анализ настроений. В сочетании с методами обработки естественного языка этот инструмент можно использовать для анализа общественного мнения по отношению к определенным темам, событиям или объектам.

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

За кулисами: поведение кода

После запуска скрипт работает в бесконечном цикле, автоматически переподключаясь после каждого отключения, ошибки или тайм-аута. Чтобы выйти из цикла, вам нужно вручную завершить скрипт, нажав CTRL+C.

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

Если по какой-либо причине скрипт будет остановлен, после перезапуска он автоматически возобновит работу и добавит существующие данные очистки при условии, что используются тот же пользователь/хэштег/слово и те же даты начала и окончания.

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

Предстоящая функция: Hydrate Tweet by Scraping

В рамках продолжающейся миссии по повышению ценности и доступности Twitter Toolbox я рад объявить о предстоящей функции: удаление твитов с помощью очистки.

В случае недавних изменений API предыдущий подход к гидратации списка tweet_id стал доступен только для платных аккаунтов. Использование скрейпинга представит бесплатный и простой метод извлечения и гидратации всеобъемлющего набора данных, содержащего только tweet_id, что позволит обеспечить соответствие TOS TOS.

Отказ от ответственности в отношении Политики конфиденциальности Twitter

Обратите внимание, что использование Twitter Toolbox для извлечения данных из API Twitter должно соответствовать Соглашению с разработчиком Twitter, Политике конфиденциальности и другим соответствующим условиям обслуживания. Данные, особенно идентификаторы пользователей и личная информация, должны использоваться этично и в соответствии с законами и правилами. Кроме того, набор инструментов включает в себя сценарий обезвоживания, src/dataAcquisition/dehydrate-tweets.pyчтобы обеспечить соответствие TOS Твиттера за счет обмена только идентификаторами твитов. Неправильное использование этих данных может привести к серьезным последствиям, включая прекращение доступа к API. Помните, что ответственность за этичное и законное использование данных лежит исключительно на вас.

Заключение

На этом мы завершаем представление функции извлечения из набора инструментов Twitter. Функция парсинга — это эффективный и простой в использовании инструмент для сбора данных об активности пользователя на платформе. Он предлагает бесценный ресурс для исследователей, маркетологов, аналитиков данных и всех, кто интересуется текущим языковым поведением или рыночными тенденциями.

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

© Все права защищены, июнь 2023 г., Симеон ФЕРЕС

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .