1

我看到了this previous 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。

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

提前致谢。

4

5 回答 5

3

好的,所以我已经查看了您正在做的事情,并且您正在做的一些事情可能会通过检查Twitter API 方法得到帮助,尽管可能很难弄清楚如何将一些示例翻译成 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")
于 2012-01-26T19:03:35.043 回答
0

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

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

于 2012-05-08T22:49:20.420 回答
0

要操作 twitter,请使用twitteR包。

library(twitteR)
searchTwitter("bruins")

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

于 2012-01-10T10:23:12.750 回答
0

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

于 2013-06-25T20:02:56.343 回答
0

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

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

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

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

于 2012-01-10T15:12:58.380 回答