繁体   English   中英

使用 tweepy 进行分页/访问 100 多条推文

[英]pagination / accessing more than 100 tweets using tweepy

我想出了以下代码,它使用 twitters full_archive_search 迭代一堆日期和流推文。 请注意,我使用免费沙盒版本访问过去的推文,每月允许 50 个请求。 我遇到的问题是我想每天访问 100 多条推文。 (搜索仅提供第一页的 100 条推文/结果,如何访问第二页等等?)参考 tweepy 文档后,我觉得这可以通过next参数进行控制。 但我不知道如何使用它。

import tweepy as tw
from datetime import date,timedelta
from dateutil.relativedelta import relative delta

# Create a range of dates 
start_date = date(2020,1,1)
end_date = date(2020,1,31)
date_range = [start_date + timedelta(days = i) for i in range(relativedelta(end_date,start_date).days)]
dates_str =[i.strftime('%Y%m%d%H%M') for i in date_range]

# Autenticate twitter
auth = tw.OauthHandler(
    consumer_key = ???
    consumer_secret = ???
)
api = tw.API(auth)

df_list = []

# Iterate over each date and extract maximum of 100 tweets per date. How do I increase this number?
for dt_idx, dt in enumerate(date_str):
    if dt_idx < len(dates_str) - 1:
        twObj = api,search_full_archive(
            environment_name = ???,
            query = '#Taal',
            fromDate = dates_str[dt_idx],
            toDate = dates_str[dt_idx + 1],
        )
        
        #iterate over the tweet object and save tweet text
        tweet_list = []
        for tweet in twObj:
            tweet_list.append(tweet.text)

        #append the tweet_list to df_list
        df_list.append(tweet_list)

我想知道如何在推文对象中添加next参数来提取每个日期超过 100 条推文? 有任何想法吗?

我会做的是使用 user_timeline ,你也会遇到同样的问题,必须处理分页。 要解决该问题,请使用“.Cursor”

那么你将如何在你的代码中运行它:

tweet_list = []
for tweet in twObj:
    tweepy.Cursor(api.user_timeline, screen_name = "", count = 200, tweet_mode 
    = 'extended').items 

这是我个人使用的函数,我更喜欢将函数设置为只运行一次,然后在调用它时让它循环。 我认为它更干净,您可以检查错误而不必让函数循环。

def extract_tweets(userid):
    all_tweets = []
    tweets = tweepy.Cursor(api.user_timeline,screen_name = userid, 
                            count = 200, 
                            tweet_mode = 'extended').items()

如果您遇到任何错误,请告诉我

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM