Рубрики
Без рубрики

Запуск пакета Python для поиска твитов в R

Запуск по поиску Tweets-Python Package внутри R. Tagged с Twitter, R, Python, Учебник.

Это руководство было Первоначально опубликовано в блоге разработчика Twitter .

Сетчатый Это пакет для R, который позволяет запустить код Python внутри R. Поскольку как Python, так и R очень популярны для общих задач науки о данных, имеет смысл, что вы хотели бы использовать их вместе. Несколько раз меня спросили, имели ли у нас R версию пакета Python, Поиск-твиты – Python Отказ Этот пакет позволяет подключаться к премиум и Предприятие поиск конечных точек легко. С сетчатый , Вы можете назвать этот пакет Python внутри R. Этот учебник проведет вас через то, как использовать пакет поиска-твиты – Python внутри R, чтобы получить кадр данных, который содержит дату, идентификатор и текст твитов из Twitter Вы выбираете за последние 30 дней.

Что вам нужно, чтобы начать с API Twitter

Во-первых, вам понадобится утвержденный счет разработчика. Вы можете подать заявку на учетную запись разработчика здесь Отказ Как только ваш аккаунт будет одобрен, вам нужно Создайте приложение Twitter Отказ Затем настройте это приложение для Поиск твитов: 30-дневная среда Отказ Вам также понадобится установить имя окружающей среды Dev – для целей этого учебного помазывания называется Testaroo Отказ После того, как вы завершили начальную настройку, вам нужно Найдите свои ключи и токены Отказ

Установка пакетов тебе нужно

Чтобы следить за этим руководством, вам нужно будет установить пакеты сетчатый и DPYLYR Отказ Ститография – это пакет, который позволит вам запустить код Python внутри R и DPYLYR Позволяет сформировать ваши данные, чтобы получить именно результаты, которые вы ищете.

install.packages('reticulate')
install.packages('dplyr')

Вам также нужно будет позвонить в пакеты, чтобы начать работать с ними:

library('reticulate')
library('dplyr')

Получение вашей среды Python настроить внутри R

Чтобы работать с сетчатом, вам нужно будет убедиться, что ваша среда Python настроена в R. Вам нужно будет создать переменную для вашего пути Python и использовать use_python Модуль, чтобы установить этот путь.

path_to_python <- "/usr/bin/python3.7"
use_python(path_to_python)

Вам нужно будет установить пакеты Python wicktweets Чтобы помочь вам подключиться к API Twitter и Пандас создать кадр данных. Вы создадите виртуальную среду, которая обеспечивает изолированную среду Python для установки пакетов. У вас также есть возможность использовать кондейский если хочешь.

Следующий код создает виртуальную среду под названием Tweetenv. . Вы будете использовать две строки кода для установки в эту среду. После установки его вы можете сказать R, чтобы использовать виртуальную среду, которую вы только что создали Tweetenv Используя функцию use_virtualenv Отказ

virtualenv_install("tweetenv", "searchtweets", ignore_installed = TRUE)
virtualenv_install("tweetenv", "pandas", ignore_installed = TRUE)
use_virtualenv("tweetenv", required = TRUE)

Вам нужно импортировать две пакеты, которые вы только что установили в свой код. Вы создадите переменную под названием ул. что импортирует пакет wicktweets И один называется PD для Пандас Отказ

st <- import("searchtweets")
pd <- import("pandas")

Хранение и доступ к своим учетным данным

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

search_tweets_api:
  account_type: premium
  endpoint: https://api.twitter.com/1.1/tweets/search/30day/Testaroo.json
  consumer_key: xxxxxxxxxxxxxxxxxxx
  consumer_secret: xxxxxxxxxxxxxxxxxxx

env_name В конечной точке название среды DEV вы создали на Developer.twitter.com. Вам нужно будет изменить это на имя собственной среды Dev.

Вы хотите убедиться, что вы добавляете этот файл в свой .gitignore Прежде чем подтолкнуть его к Github. Для получения дополнительной информации о работе с .gitignore Файл Проверьте эту страницу Отказ Вы также можете просмотреть наши Руководство по сохранению жетонов .

В вашем файле R вы захотите создать переменную, которая использует load_credentials Функция библиотеки поиска-твиты-Python загружать в свой Secret.yaml файл. Вам может потребоваться ввести полный путь для файла, если вы столкнулись с любыми проблемами.

cred <-
  st$load_credentials(filename = "secret.yaml",
                      yaml_key = "search_tweets_api",
                      env_overwrite = FALSE)

Получение ключевой информации

Сначала вам нужно настроить переменную, чтобы позволить нам ввести ручку Twitter, вы ищете. Для целей этого учебника используется пример используется @twitterdev. Но вы можете ввести любую ручку Twitter, которое вы хотите, чтобы послепроизводиться сделать это по коду.

input <- readline('What handle do you want to get Tweets from? ')

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

today <- toString(Sys.Date())
thirty_days <- toString(as.Date(today) - 30)

Чтобы ваш текст правильно отформатирован, чтобы вы могли построить допустимый поисковый запрос, вам нужно сделать некоторое форматирование строки для создания переменной под названием PT_Format Отказ

pt_format <- sprintf("from:%s", input)

Запустите оператор печати, чтобы убедиться, что все выглядит хорошо.

print(pt_format)

То, что вы вернетесь, должны выглядеть так:

[1] "from:TwitterDev"

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

rule <-
  st$gen_rule_payload(
    pt_rule = pt_format,
    from_date = thirty_days,
    to_date = today,
    results_per_call = 500
  )

Просто распечатайте это правило, чтобы увидеть, что у вас есть:

print(rule)

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

[1] "{\"query\": \"from:TwitterDev\", \"toDate\": \"202002070000\", \"fromDate\": \"202001080000\"}"

Получать твиты

Далее вам нужно будет создать переменную, называемую RS, которые позволяют нам подключиться к конечной точке, пройти в Max результаты и пропустите в вашем имени пользователя, конечной точке и токене предъявителя.

rs <-
  st$ResultStream(
    rule_payload = rule,
    max_results = 500,
    username = cred$extra_headers_dict,
    endpoint = cred$endpoint,
    bearer_token = cred$bearer_token
  )
print(rs)

Если вы распечатаете эту переменную, вы получите тело JSON, которое выглядит так:

ResultStream: 
    {
    "username": null,
    "endpoint": "https://api.twitter.com/1.1/tweets/search/30day/Testaroo.json",
    "rule_payload": {
        "query": "from:TwitterDev",
        "toDate": "202002070000",
        "fromDate": "202001080000"
    },
    "tweetify": true,
    "max_results": 1000000000000000
}

Вы можете пройти поток результатов с использованием потока атрибута () в переменную под названием Tweats.

tweets <- rs$stream()
print(tweets)

Когда вы распечатаете переменную твитов, вы получите объект генератора, который выглядит так.


Чтобы иметь возможность получить доступ к информации в объекте генератора Python, вы можете использовать Итерация атрибут.

it_tweets <- iterate(tweets)

Создание рамки данных

Рамка данных представляет собой тазовую структуру данных, которая может быть особенно полезна для работы с наборами набора данных. Чтобы получить данные кадра твитов, вы можете использовать Dataframe атрибут Пандас Отказ Объект кадра данных из PANDAS совместим с кадрами данных в R, поэтому вы можете использовать ваши любимые R пакеты с этой точки, которую вы можете использовать, не выполняя дополнительные преобразования.

tweets_df <- pd$DataFrame(data=it_tweets)

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

View(tweets_df)

Если вы хотите работать с меньшим кадром данных, который содержит только несколько столбцов, которые вы можете Выберите определенные столбцы Использование Dyplr , пакет для R, полезных для изменений данных. Следующий код вернет кадр данных, имеющих дату, Tweet ID и текст для всех твитов, которые соответствуют запросу, которое вы запустили ранее.

smaller_df <- select(tweets_df, created_at, id, text)
View(smaller_df)

Следующие шаги

Это было интересно изучить совместимость работы с данными в Твиттере с элементами двух разных языков. Другие вещи, которые вы можете сделать, чтобы исследовать это дополнительно включить Бег во внутри ноутбука Jupyter и используйте пакет под названием RPY2 Чтобы запустить R-код внутри Python. Полная версия кода можно найти здесь Отказ Дайте нам знать на Форумы Если вы столкнулись с любыми неприятностями по пути или твитнуть нас на @Twitterdev. Если это вдохновляет вас создать что-нибудь.

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

Оригинал: “https://dev.to/twitterdev/running-search-tweets-python-in-r-45eo”