【问题标题】:How to get all tweets (more than 100) and associated user fields in python using twitter search API v2 and Tweepy?如何使用 twitter search API v2 和 Tweepy 在 python 中获取所有推文(超过 100 条)和关联的用户字段?
【发布时间】:2022-11-23 06:10:27
【问题描述】:

我正在尝试使用 search_recent_tweets 获取与特定查询匹配的所有推文及其关联的用户字段(用户名、姓名等)。我尝试使用分页和展平,但它只会展平推文(而不是用户字段)。所以我正在尝试在 get_user_tweets 中实现类似 next_token 的东西,但是 search_recent_tweets 没有 pagination_next?我怎样才能做到这一点?

这是我要使用的代码

import pandas as pd
import tweepy

BEARER_TOKEN = ''
api = tweepy.Client(BEARER_TOKEN)

response = api.search_recent_tweets(query = 'myquery',start_time = '2022-09-19T00:00:00Z', end_time = '2022-09-19T23:59:59Z',
                              expansions = ['author_id'],
                              tweet_fields = ['created_at'],
                              user_fields = ['username','name'],
                              max_results = 100)
tweet_df = pd.DataFrame(response.data)
metadata = response.meta
users = pd.concat({k: pd.DataFrame(v) for k, v in response.includes.items()}, axis=0)
users = users.reset_index(drop=True)
users.rename(columns={'id':'author_id'}, inplace=True)
all_tweets = tweet_df.merge(users)
next_token = metadata.get('next_token')
while next_token is not None:
    response = api.search_recent_tweets(query = 'myquery',start_time = '2022-09-19T00:00:00Z', end_time = '2022-09-19T23:59:59Z',
                            expansions = ['author_id'],
                            tweet_fields = ['created_at'],
                            user_fields = ['username','name'],
                            pagination_token=next_token,
                            max_results = 100)
    tweet_df = pd.DataFrame(response.data)
    metadata = response.meta
    users = pd.concat({k: pd.DataFrame(v) for k, v in response.includes.items()}, axis=0)
    users = users.reset_index(drop=True)
    users.rename(columns={'id':'author_id'}, inplace=True)
    tweets = tweet_df.merge(users)
    all_tweets.append(tweets)
    next_token = metadata.get('next_token')
    
all_tweets

【问题讨论】:

  • 关于如何做到这一点的任何想法?

标签: python twitter tweepy


【解决方案1】:

您可以为此使用 GTdownloader:

from gtdownloader import TweetDownloader

# create downloader using Twitter API credentials
gtd = TweetDownloader(credentials='twitter_keys.yaml')

gtd.get_tweets('myquery', 
               lang='en', 
               max_tweets=100,
               start_time='09/19/2022', 
               end_time='09/20/2022'
               )

# accessing tweets data frame
gtd.tweets_df.head()

请参阅 https://gtdownloader.readthedocs.io/ 上的文档

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 2021-03-30
    • 2015-06-06
    • 2020-03-10
    • 1970-01-01
    • 2015-10-08
    相关资源
    最近更新 更多