使用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)
我如何使用 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)