如何在Python的TwitterAPI中使用TwitterPager进行多个调用?

2024-10-05 11:27:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Twitter的高级API中搜索tweets。我将TwitterAPI文档中的格式复制到当前代码中,但出现以下错误。我错过了什么?我对Python还比较陌生。我正在使用Twitter的sandboxpremium搜索API来搜索完整的历史记录。我可能在如何使用get_iterator()的知识上有差距。提前谢谢!你知道吗

api = TwitterAPI(key, secretkey, token, secrettoken)

#search tweets #added edit to pass api through Twitter Pager
tweets = TwitterPager(api, 'tweets/search/%s/:%s' % (PRODUCT, LABEL), 
                      {'query': 'pizza',
                       'lang': 'en'
                    })

for item in tweets.get_iterator():
    print(item['text'] if 'text' in item else item)

我得到以下错误:

---------------------------------------------------------------------------
TwitterRequestError                       Traceback (most recent call last)
<ipython-input-71-85784cf972fe> in <module>
----> 1 for item in tweets.get_iterator():
      2     print(item)

~\AppData\Local\Continuum\anaconda3\lib\site-packages\TwitterAPI\TwitterPager.py in get_iterator(self, wait, new_tweets)
     45                 start = time.time()
     46                 r = self.api.request(self.resource, self.params)
---> 47                 it = r.get_iterator()
     48                 if new_tweets:
     49                     it = reversed(list(it))

~\AppData\Local\Continuum\anaconda3\lib\site-packages\TwitterAPI\TwitterAPI.py in get_iterator(self)
    204         """
    205         if self.response.status_code != 200:
--> 206             raise TwitterRequestError(self.response.status_code)
    207 
    208         if self.stream:

TwitterRequestError: Twitter request failed (422)

我的代码与basic一起工作api.请求(…)'方法使用相同的搜索参数。但是我需要使用TwitterPager和get_iterator()来返回更多的结果。你知道吗


Tags: 代码inselfapigetifittwitter
1条回答
网友
1楼 · 发布于 2024-10-05 11:27:53

我不熟悉您正在使用的特定包,但我猜您实际上并没有将您创建的api对象传递给它。因此,它试图对您的第一个参数(字符串)执行其操作,该参数实际上应该是api实例。试试这个:

api = TwitterAPI(key, secretkey, token, secrettoken)

#search tweets
tweets = TwitterPager(api, 'tweets/search/%s/:%s' % (PRODUCT, LABEL), # added the api as first arg
                      {'query': 'pizza',
                       'lang': 'en'
                    })

for item in tweets.get_iterator():
    print(item['text'] if 'text' in item else item)

编辑

these docs中,您必须将api作为第一个参数发送给寻呼机。你知道吗

相关问题 更多 >

    热门问题