CoderCastrov logo
CoderCastrov
Технологии

EP2 Twitter Toolbox: Ваш идеальный руководитель по парсингу данных

EP2 Twitter Toolbox: Ваш идеальный руководитель по парсингу данных
просмотров
7 мин чтение
#Технологии

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

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


Введение: Мощь набора инструментов Twitter

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

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

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

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

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

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

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

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

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

  • selenium
  • pandas
  • request
  • python-dotenv
  • argparse

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

На Mac:

# Используйте homebrew
brew install cask chromedriver
# Проверьте, что установка прошла успешно
chromedriver --version
# Получите путь к chromedriver
brew info chromedriver

На Linux я предоставил скрипт shell, который вам просто нужно запустить:

# Сделайте скрипт исполняемым (в базовой папке проекта)
chmod +x chromedriver.sh
# Запустите скрипт
./chromedriver.sh
# Проверьте установку
chromedriver --version
# Получите путь
which chromedriver

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

.env Файл:

USERNAME = "Ваше имя пользователя"
PASSWORD = "Ваш пароль"
EMAIL = "Ваша электронная почта"
CHROME_DRIVER_PATH = "Путь к chromedriver"

Использование инструмента: Парсинг данных

Для парсинга данных с Twitter выполните файл run-scraping.py, расположенный в директории src/dataAcquisition:

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

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

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

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

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

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

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

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

Например, для парсинга данных в течение 2021 года по хэштегу #covid:

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

Или для сбора выборки англоязычных твитов в определенную дату (Целевой твит с использованием слова "you").

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

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

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

data/scraping/<пользователь>/<пользователь>_<начало>_<конец>.csv
data/scraping/<хэштег>/<хэштег>_<начало>_<конец>.csv
data/scraping/<слово>/<слово>_<начало>_<конец>.csv

Структура данных выглядит следующим образом:

tweet_id,user_id,timestamp,text

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Предстоящая функция: Гидратация твитов путем парсинга

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

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

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

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

Заключение

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

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

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

Больше контента на PlainEnglish.io.

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