【问题标题】:Twitter Premium API Sandbox : Error Code 403Twitter 高级 API 沙盒:错误代码 403
【发布时间】:2019-06-18 00:48:18
【问题描述】:

我正在尝试通过高级 API 沙盒从 Twitter 获取数据。

我已经构建了 30 天高级 API 沙盒,以下是我发送请求的代码。

from TwitterAPI import TwitterAPI

consumer_key = 'XXX'
consumer_secret = 'XXX'
access_token = 'XXX'
access_token_secret = 'XXX'

api = TwitterAPI(consumer_key, consumer_secret, access_token, access_token_secret)
r = api.request('tweets/search/30day/:test.json', {'q' : 'python') //test is my own label

for item in r:
     print(item['text'])

但是,我不断收到错误代码 403,例如:

Traceback (most recent call last):
  File "Twitter_api_srch_full.py", line 11, in <module>
    for item in r:
  File "/anaconda3/lib/python3.6/site-packages/TwitterAPI/TwitterAPI.py", line 206, in __iter__
    return self.get_iterator()
  File "/anaconda3/lib/python3.6/site-packages/TwitterAPI/TwitterAPI.py", line 193, in get_iterator
    raise TwitterRequestError(self.response.status_code)
TwitterAPI.TwitterError.TwitterRequestError: Twitter request failed (403)

有人知道导致此类错误的潜在原因吗?

感谢您的帮助:)

【问题讨论】:

    标签: twitter


    【解决方案1】:

    您将 Search API 的 q 参数与 Premium API 搜索一起使用。请改用query,如下所示:

    r = api.request('tweets/search/30day/:test', {'query' : 'python'}) 
    

    【讨论】:

    • 我是免费使用沙箱的,所以我认为它的参数应该与标准搜索 API 相同。
    【解决方案2】:

    您的代码中有几个问题:

    1. 您使用的标签不应以冒号开头,或以.json 结尾
    2. “q”参数应为“查询”

    在 TwitterAPI 存储库中有一个 sample,但这里有一些工作:

    from TwitterAPI import TwitterAPI
    
    consumer_key = 'XXX'
    consumer_secret = 'XXX'
    access_token = 'XXX'
    access_token_secret = 'XXX'
    
    PRODUCT = '30day'
    LABEL = 'development'
    
    api = TwitterAPI(consumer_key, consumer_secret, access_token, access_token_secret)
    r = api.request('tweets/search/%s/:%s' % (PRODUCT, LABEL), {'query' : 'python'}) 
    
    for item in r:
         print(item['text'])
    

    【讨论】:

      【解决方案3】:

      由于TwitterAPI 不是 Twitter Premium 和 Enterprise API 的官方 Python 包装器,我强烈建议您使用 search-tweets-python,因为它是 twitterdev 版本。

      所以,要安装 search-tweets-python,您可以通过 PyPi 通过以下命令进行安装:

      python -m pip install searchtweets

      您可以获取有关searchtweets PyPi package 最新版本的更多信息。

      安装后,您需要创建一个 .yaml 文件,如 https://github.com/twitterdev/search-tweets-python/blob/master/examples/credential_handling.rst 中所述,在您的情况下,使用 30 天沙盒搜索将如下所示:

      一旦您创建了twitter_api_premium_credentials.yaml 文件,您就可以开始通过 Python 使用 Premium Twitter API,您案例中的代码或多或少类似于:

      from searchtweets import load_credentials, gen_rule_payload, collect_results, ResultStream
      
      
      premium_search_args = load_credentials("twitter_api_premium_credentials.yaml",
                                             yaml_key="search_tweets_premium_api",
                                             env_overwrite=False)
      
      rule = gen_rule_payload("python lang:en", results_per_call=100)
      
      rs = ResultStream(rule_payload=rule,
                        max_results=100,
                        max_pages=1,
                        **premium_search_args)
      
      tweets = list(rs.stream())
      
      [print(tweet.all_text, end='\n\n') for tweet in tweets[0:10]]
      

      正如您在上面的代码中看到的那样,您正在导入您需要使用的函数来检索推文、使用您的凭据获取不记名令牌、生成查询或规则有效负载并检索推文。

      希望对你有所帮助!

      【讨论】:

      • TwitterAPI 虽然不是“官方的”,但包含在 Twitter 的第三方库列表中。 developer.twitter.com/en/docs/developer-utilities/…
      • @Jonas 我没有说它是官方的 Python API 包装器,我只是说它是 twitterdev 版本!但是感谢您的澄清,这可能会造成混淆!
      猜你喜欢
      • 2019-11-10
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 2013-04-05
      • 2020-11-02
      • 2016-04-27
      • 2017-09-10
      相关资源
      最近更新 更多