python - 如何在 Python 的 TwitterAPI 中使用 TwitterPager 进行多次调用?
问题描述
我正在尝试在 Twitter 的高级 API 中搜索推文。我将 TwitterAPI 文档中的格式复制到我当前的代码中,但出现以下错误。我错过了什么?我对 Python 相当陌生。我正在使用 Twitter 的沙盒高级搜索 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)
我的代码使用相同的搜索参数与基本的 'api.request(...)' 方法一起使用。但我需要使用 TwitterPager 和 get_iterator() 才能返回更多结果。
解决方案
我不熟悉您正在使用的特定包,但我的猜测是您实际上并没有将您创建的 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)
编辑
在这些文档中,您必须将 api 作为第一个参数发送给寻呼机。
推荐阅读
- c++ - 数组索引重载错误
- ios - 如何根据四个可能的值生成随机 SKSpriteNode
- laravel - 查看通过 API 文档添加的附件
- r - R:当我从 CSV 文件导入时,日期已更改
- postgresql - 尝试在 SQL 中隔离给定日期范围 (YYYY:MM:DD HH:MM:SS) 的时间并将它们分组。无论日期如何,按特定的小时间隔
- python - 尝试用 np.nan 替换无效值时出现 ValueError
- javascript - 样式/更改 Material UI React 中的自动完成关闭图标
- android - android:scaleType="centerInside" 在 androidx ConstraintLayout 中不受尊重?
- javascript - 如何在 Vue.js/Firebase 应用中显示时间戳
- docker - 将 docker 容器应用程序连接到远程数据库服务器