当前位置: 首页 > 知识库问答 >
问题:

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

桓高澹
2023-03-14

如何使用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个答案

涂飞航
2023-03-14

您必须使用twitter文档中描述的max_id参数

Tweepy是一个围绕twitter API的包装器,所以你应该能够使用这个参数。

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

范峰
2023-03-14

到目前为止,Tweepy并不是最好的解决方案。最好的解决方案是使用python库SnScrape,它可以刮除twitter,因此可以在twitter设置2周上限后获得tweet。下面的代码只在日期之间抓取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)
蒋浩
2023-03-14

经过长时间的调查和稳定,我可以很高兴地分享我的发现

>

  • 搜索的地理代码:传递的地理代码参数在'q'参数在这种格式:地理代码:"37.781157,-122.398720,500mi",双引号是重要的。地理编码提供了更多的灵活性

    按时间线搜索:使用以下格式的参数“自”和“至”:自:2016-08-01至:2016-08-02

    还有一个更重要的注意事项...推特不允许日期太旧的查询。我不确定,但我认为他们只给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
    

  •  类似资料:
    • 问题内容: 以下查询: 什么也不返回。 我应该有足够多的数据来使查询工作。我究竟做错了什么? 问题答案: 您的第二个日期早于您的第一个日期(即,您正在查询2010年9月29日至2010年1月30日之间)。尝试颠倒日期的顺序:

    • 问题内容: 我有一个包含多个数据结构的文件,如下所示: 我想找到所有有效载荷事件:SMS-MO-FSM或有效载荷:SMS-MO-FSM-INFO,发生在时间2010-03-23 12:56:47和2010-03-23 13之间: 56:47。到目前为止,当查询此文件时,我以以下方式使用了awk: 这将为我提供在2010-03-23 14:16:35的第二个事件发生的所有事件。但是,我正在努力思考如

    • 问题内容: 以下查询: 什么也不返回。 我应该有足够多的数据来使查询工作。我究竟做错了什么? 问题答案: 您的第二个日期早于您的第一个日期(即,您正在查询2010年9月29日至2010年1月30日之间)。尝试颠倒日期的顺序:

    • 问题内容: 我正在尝试创建一个报告页面,以显示从特定日期到特定日期的报告。这是我当前的代码: 这在普通SQL中的作用是。 我在这里有此查询,但我不知道如何将其转换为雄辩的查询。 如何将上面的代码转换为雄辩的查询?先感谢您。 问题答案: 该方法验证列的值是否在两个值之间。 在某些情况下,您需要动态添加日期范围。根据@Anovative的评论,您可以执行以下操作: 如果您想添加更多条件,则可以使用。如

    • 问题内容: 我正在编写一个需要在两个固定时间戳之间分配随机日期的应用程序 我如何使用php实现此目的,我首先搜索过但仅找到Java的答案,而不是php 例如 : 问题答案: PHP具有rand()函数: 它还具有mt_rand(),通常据称在结果中具有更好的随机性: 要将时间戳转换为字符串,可以使用date(),即:

    • 问题内容: 我在Scala中使用Java的类,想比较一个对象和当前时间。我知道我可以使用getTime()计算增量: 但是,这仅代表我几毫秒。有没有更简单,更好的方法来获取时间增量? 问题答案: 不幸的是,JDK API严重损坏。我建议使用Joda时间库。 Joda Time具有时间间隔的概念: 编辑:顺便说一句,乔达有两个概念:用于表示两个时刻之间的时间间隔(表示上午8点至上午10点之间的时间)