使用python,如何在两个日期之间使用collect tweets(使用tweepy)?

Using python, how to use collect tweets (using tweepy) between two dates?

我如何使用 python 和 tweepy 从 Twitter 收集两个给定日期之间的推文?

有没有办法将 from...until... 值传递给搜索 api?


笔记: 我需要能够回溯但不限于特定用户

我正在使用 python,我知道代码应该是这样的,但我需要帮助才能让它工作。


    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token_key, access_token_secret)
    api = tweepy.API(auth)

    collection = []
    for tweet in tweepy.Cursor(api.search, ???????).items():
        collection[tweet.id] = tweet._json

您必须使用 max_id 参数,如 twitter documentation

中所述

tweepy 是 twitter 的包装器 API 所以你应该可以使用这个参数。

根据地理位置,看看The Search API: Tweets by Place。它使用相同的搜索 API,带有自定义键。

经过长时间的调查和稳定,我很乐意分享我的发现。

  • 按地理编码搜索:以这种格式在 'q' 参数中传递地理编码参数:geocode:"37.781157,-122.398720,500mi" , 双引号很重要。请注意,此 api 不再支持参数 near。地理编码提供了更大的灵活性

  • 按时间线搜索:使用参数"since"和"until",格式如下:"since:2016-08-01 until:2016-08-02"

还有一个更重要的注意事项...twitter 不允许查询太旧的日期。我不确定,但我认为他们只退回 10-14 天。所以你不能通过这种方式查询上个月的推文。

===================================

for status in tweepy.Cursor(api.search,
                       q='geocode:"37.781157,-122.398720,1mi" since:2016-08-01 until:2016-08-02 include:retweets',
                       result_type='recent',
                       include_entities=True,
                       monitor_rate_limit=False, 
                       wait_on_rate_limit=False).items(300):
    tweet_id = status.id
    tweet_json = status._json

截至目前,Tweepy 并不是最佳解决方案。最好的解决方案是使用 python 库 SnScrape,它可以抓取 twitter,因此可以在 2 周的 cap twitter 设置后获取推文。下面的代码仅抓取日期之间的 100 条英文推文,并且仅获取推文 ID,但可以轻松扩展它以进行更具体的搜索、更多或更少的推文,或者获取有关推文的更多信息。

import snscrape.modules.twitter as sntwitter

tweetslist = []

params="'"+"lang:en "+"since:2020-11-1"+" until:2021-03-13"+"'" 

for i,tweet in enumerate(sntwitter.TwitterSearchScraper(params).get_items()):
    if i>100:
        break
    tweetslist.append([tweet.id])

print(tweetslist)