【问题标题】:RCurl Twitter Streaming API Keyword FilteringRCurl Twitter Streaming API 关键字过滤
【发布时间】:2012-02-06 12:43:29
【问题描述】:

我看到了之前的post,但我无法调整答案以使我的代码正常工作。

我正在尝试过滤术语 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。

简单地说,我怎样才能包含我想要的搜索词以便过滤响应?

提前致谢。

【问题讨论】:

    标签: r curl twitter rcurl


    【解决方案1】:

    好的,所以我查看了您正在做的事情,您正在做的一些事情可能会通过检查 Twitter API methods 得到帮助,尽管可能很难弄清楚如何翻译其中的一些内容示例到 R 中(通过 RCurl 包)。

    你目前正在尝试的非常接近你需要做的,你只需要改变两件事。

    首先,您在 url 中查询随机的状态样本。此网址返回大约 1% 的所有推文的随机样本。

    如果您有兴趣仅收集有关特定关键字的推文,则希望使用过滤器 API url:“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")
    

    【讨论】:

      【解决方案2】:

      要操作 twitter,请使用 twitteR 包。

      library(twitteR)
      searchTwitter("bruins")
      

      您可以在对searchTwitter 的调用中包含其他参数(如cainfo),它们应该在下面传递getForm

      【讨论】:

      • 谢谢你,但我希望连接到流 API,而不是搜索 API。 twitteR 包很棒,但目前没有处理流响应的功能。
      【解决方案3】:

      我不认为流 API 当前包含在 twitteR 中 - 搜索 API 是不同的(它是向后看的,而流媒体是“当前的”)。

      据我了解,流式传输与许多 API 的工作方式完全不同;您不是从 Web 服务中提取数据并返回定义的对象,而是为 Twitter 设置一个“管道”以将数据推送给您,然后您会监听该响应。

      我认为您还需要担心 OAuth(twitteR 确实可以处理)。

      你有什么理由想保留在 R 中吗?我已经成功使用 python 与 Streaming API 和一个名为 tweepy 的包将数据写入 MySQL 数据库,然后使用 R 来查询和分析数据。

      【讨论】:

      • 我想留在 R 中主要是因为它是我所知道的唯一语言,但我也将在其中进行分析。 RCURL 包似乎很健壮,所以我相信这是可能的。
      【解决方案4】:

      上次我检查时,推特没有与流媒体 API 对话。此外,据我所知,任何语言的公开可用的 Twitter Streaming API 连接库很少支持 Twitter 关于在 Streaming 断开连接/抛出错误时重新连接的建议。

      我的建议是通过一个积极维护的库来访问 Streaming,如果需要,自己编写重新连接协议,并将数据保存到本机处理 JSON 的数据库中。我即将开始一个这种性质的项目,并将用 Perl 编写收集器,做我自己的重新连接逻辑并持久化到 PostgreSQL 或 MongoDB 中。很可能是 MongoDB; PostgreSQL 直到 9.2 才获得原生 JSON。

      【讨论】:

        【解决方案5】:

        我知道,游戏已经很晚了,但您会想要使用“streamR”包来访问 Twitter 的流 API。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多