RCurl Twitter Streaming API Фильтрация ключевых слов - PullRequest
1 голос
/ 10 января 2012

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

Я пытаюсь отфильтровать термин bruins, и мне нужно сослаться на cacert.pem для аутентификации на моем компьютере с Windows. Наконец, я написал функцию для анализа каждого ответа (my.function), и мне нужно включить это.

postForm("https://stream.twitter.com/1/statuses/sample.json", 
       userpwd="user:pass",
       cainfo = "cacert.pem",
       a = "bruins",
       write=my.function)

Я надеюсь остаться полностью внутри R и, к сожалению, должен использовать Windows.

Проще говоря, как я могу включить искомое условие (я), чтобы отфильтровать ответ?

Заранее спасибо.

Ответы [ 5 ]

3 голосов
/ 26 января 2012

Хорошо, поэтому я посмотрел на то, что вы делаете, и кое-что из того, над чем вы работаете, может помочь, изучив методы Twitter API , хотя это может быть трудно понятькак перевести некоторые примеры в R (с помощью пакета RCurl).

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

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

Если вы заинтересованы в сборе только твитов по определенным ключевым словам, вы хотите использовать URL-адрес фильтра API: "https://stream.twitter.com/1/statuses/filter.json"

Послеизменяя это, вам просто нужно изменить ваш параметр с «a» на «postfields», и параметр, который вы будете передавать, будет выглядеть так: «track = bruins»

Наконец, вы должны использовать функцию getURL, чтобы открыть непрерывный поток, чтобы можно было собирать все твиты с вашими ключевыми словами вместо использования команды postForm (которая, я считаю, предназначена для HTML-форм).

, поэтому ваш последний вызов функции должен выглядеть следующим образом:

getURL("https://stream.twitter.com/1/statuses/filter.json", 
   userpwd="Username:Password",
   cainfo = "cacert.pem",
   write=my.function,
   postfields="track=bruins")
0 голосов
/ 26 июня 2013

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

0 голосов
/ 09 мая 2012

В прошлый раз, когда я проверял, twitteR не общался с потоковым API. Более того, насколько я знаю, очень немногие общедоступные библиотеки подключений к Twitter Streaming API на любом языке соблюдают рекомендации Twitter по переподключению, когда Streaming отключает / выдает ошибку.

Я рекомендую получить доступ к Streaming через библиотеку, которая активно поддерживается, написать протокол повторного подключения самостоятельно, если необходимо, и сохранить данные в базе данных, которая обрабатывает JSON изначально. Я собираюсь начать проект такого рода и буду писать сборщик на Perl, выполняя свою собственную логику повторного подключения и сохраняя ее в PostgreSQL или MongoDB. Скорее всего, это будет MongoDB; PostgreSQL не получает собственный JSON до 9.2.

0 голосов
/ 10 января 2012

Я не думаю, что Streaming API в настоящее время включен в twitteR - API для поиска отличается (он обращен назад, тогда как потоковый является «текущим»).

Насколько я понимаю, потоковая передача сильно отличается от того, как обычно работают многие API;вместо того, чтобы извлекать данные из веб-службы и возвращать определенный объект, вы настраиваете «канал» для Twitter, чтобы передавать вам данные, а затем прослушиваете этот ответ.

Вам также нужно беспокоитьсяоб OAuth я думаю (с каким twitteR имеет дело).

Есть ли причина, по которой вы хотите сохранить R?Я успешно использовал python с Streaming API и пакетом tweepy для записи данных в базу данных MySQL, а затем использую R для запроса и анализа данных.

0 голосов
/ 10 января 2012

Для манипулирования твиттером используйте пакет twitteR.

library(twitteR)
searchTwitter("bruins")

Вы можете включить другие параметры (например, cainfo) в вызов searchTwitter, и они должны быть переданы getFormвнизу.

...