使用python,如何在两个日期之间使用收集推文(使用tweepy)?

时间:2016-08-25 03:28:40

标签: python twitter tweepy tweets

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

有没有办法从...直到...值到搜索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

3 个答案:

答案 0 :(得分:5)

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

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

  • 按时间线搜索:使用参数"因为" "直到"采用以下格式:"自:2016-08-01至: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

答案 1 :(得分:0)

截至目前,Tweepy 并不是最好的解决方案。最好的解决方案是使用 python 库 SnScrape,它可以抓取 twitter,因此可以在 2 周上限 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)

答案 2 :(得分:-1)

您必须使用twitter documentation

中所述的max_id参数

tweepy是twitter API的包装器,因此您应该可以使用此参数。

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