【问题标题】:Twitter API v2 in Python - issues with datetime conversionPython 中的 Twitter API v2 - 日期时间转换问题
【发布时间】:2021-06-12 05:51:06
【问题描述】:

我将 Python-Twitter API 访问权限从 v1 升级到了 v2。但看起来,Twitter 不再接受我更新后的函数 start_timeend_time 的时间戳格式。对于 v1 API,我使用了简单的日期时间字符串,例如 20190304205520。但是当我尝试将这些字符串与 v2 一起使用时,控制台给了我以下错误 "The `start_time` query parameter value [20190304205520] is not a valid RFC3339 date-time.

为解决此问题,我应用以下代码将字符串转换为 Twitter 文档建议使用的 ISO 格式,例如 2019-03-04T20:55:20Z。

start_time = pd.to_datetime(start_time, format='%Y%m%d%H%M')
start_time = start_time.isoformat()

输出为:'2019-03-04T20:55:20'

但是,当我将这些结果放入 gen_request 函数时,我收到另一个错误消息:unconverted data remains: 00:00:00Z

在这两种情况下我都无法运行我的查询。

我在python上使用的是常规的searchtweets库,我的代码如下:

query = gen_request_parameters(string, results_per_call=100, start_time=from_date, end_time=to_date)。 from_date 和 to_date 默认保存一个字符串格式,例如 '20190304205520'。

为了收集推文,我使用了函数:

tweets = collect_results(query,
                          max_tweets= 500,
                          result_stream_args=search_args)

我知道这可能很简单,但我无法真正理解它。我使用 Python 访问 Twitter 已经有一段时间了,如果有人可以帮助我,我将不胜感激。

【问题讨论】:

    标签: python-3.x datetime twitter


    【解决方案1】:

    我不知道你是否找到了解决方案,但我刚刚遇到了这个错误,所以我认为为任何搜索的人记录一个解决方案会很好。

    步骤:

    1. pip install searchtweets-v2
    2. 使用Twitter API V2 documentation 推荐的文档来执行以下操作:

    from searchtweets import ResultStream, gen_request_parameters, load_credentials

    search_args = load_credentials(filename="~/.twitter_keys.yaml",
                     yaml_key="search_tweets_v2",
                     env_overwrite=False)
    
    query = gen_request_parameters(query, start_time=start_time, results_per_call=100, expansions='author_id,geo.place_id', tweet_fields='created_at,geo',user_fields='description,location')
    
    rs = ResultStream(request_parameters=query,
                        max_results=10000,
                        max_pages=10000,
                        max_tweets=10000,
                        **search_args)
    

    我收到的错误是“未转换的数据仍然存在::00Z”。查看错误时,我注意到它期望的 start_time 格式不包括秒。所以我将我的开始时间戳重新格式化为 YYYY-MM-DDTHH:mm 格式(注意,最后没有 Z,没有秒),然后它就可以正常工作了。

    不知道为什么文档说要使用 YYYY-MM-DDTHH:mm:ssZ。当我 pip 安装它时,也许我以某种方式获得了旧版本的 V2 api。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 2019-05-31
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多