0

我想在 Twitter 上搜索 50 个关键字。到目前为止,我已经尝试了两种搜索 Twitter 的方法。第一种方法只为我打印最后一条推文的数据,而不考虑关键字。

这是我使用的第一种方法:

for (i in c("#GMCR","#NFLX","#PCLN","#SWN","#MA","#EW","#WDC", "#ROST", "#RHT", "#ESRX", "#URBN", "#CRM", "#THC", "#BLK", "#AMZN", "#AAPL", "#CERN", "#FFIV", "#DTV", "#AZO", "#ISRG", "#SJM", "#EOG", "#OXY", "#CF", "#GIS", "#FLS", "#WMT", "#NTAP", "#HSP", "#CSX", "#ACT", "#MOS", "#TJX", "#CL", "#MCD", "#COG", "#RRC", "#FLIR", "#CTSH", "#MYL", "#LEG", "#APH", "#VAR", "#HAS", "#FSLR", "#APA", "#ABC", "#UNP", "#EL"))
         {
           tweet6<-searchTwitter(i,lang='en',since='2015-09-02', until='2015-09-03')
         }
tweet6

这是第二种方法,我只是在searchTwitter()函数中输入了 50 个关键字,但它给出了 403 错误:

tweet6<-searchTwitter('#GMCR||#NFLX||#PCLN||#SWN||#MA||#EW||#WDC||#ROST||#RHT||#ESRX||#URBN||#CRM||#THC||#BLK||#AMZN||#AAPL||#CERN||#FFIV||#DTV||#AZO||#ISRG||#SJM||#EOG||#OXY||#CF||#GIS||#FLS||#WMT||#NTAP||#HSP||#CSX||#ACT||#MOS||#TJX||#CL||#MCD||#COG||#RRC||#FLIR||#CTSH||#MYL||#LEG||#APH||#VAR||#HAS||#FSLR||#APA||#ABC||#UNP||#EL',
n=500,lang='en,since='2015-09-02', until='2015-09-03')

这将返回:

Error in twInterfaceObj$doAPICall(cmd, params, "GET", ...) : 
  client error: (403) Forbidden
4

1 回答 1

0

您应该阅读twitter API 文档。根据搜索的最佳实践:

将您的搜索限制为 10 个关键字和运算符。

由于复杂性,查询可能会受到限制。如果发生这种情况,搜索 API 将响应错误:{"error":"抱歉,您的查询太复杂。请降低复杂性,然后重试。"}

因此,您一次最多可以搜索 10 个。您不应该在搜索中使用管道,搜索多个关键字的正确方法只是一个空格:

searchTwitter('#GMCR #NFLX #PCLN ...)

我认为你的循环是解决这个问题的最好方法,只要确保你没有达到速率限制:

GET 搜索/推文是 Twitter REST API 1.1 的一部分,其速率限制与其他 v1.1 方法类似。有关该模型的信息,请参阅 v1.1 中的 REST API 速率限制。此时,访问令牌代表的用户每 15 分钟可以发出 180 次请求/查询。使用仅应用程序身份验证,应用程序可以在没有用户上下文的情况下代表自己每 15 分钟发出 450 次查询/请求。

于 2015-09-10T00:14:09.390 回答