如何使用 tweepy 创建一个列表,其中包含对特定推文的所有回复?

Posted

技术标签:

【中文标题】如何使用 tweepy 创建一个列表,其中包含对特定推文的所有回复?【英文标题】:How can I create a list which contains all the replies to a specific tweet using tweepy? 【发布时间】:2021-03-21 04:02:27 【问题描述】:

我不知道为什么,但是 tweepy 没有直接的方法可以让您访问对特定推文的所有回复。我想将对推文的回复存储在名为回复的列表中。

我已经在网上到处寻找解决方案,但是给定的解决方案似乎都不起作用,或者它们已经过时了。

我一直在使用我在堆栈溢出时从另一个用户那里找到的以下代码。

它应该获取用户(名称)最近的 10 条推文以及对该特定推文的回复。回复将保存到名为回复的列表中。您可以通过增加项目数来检索更多推文(例如:items(100))。

它正在捕获和打印主要推文,但是回复列表总是返回为空,并且没有打印任何回复。

非常感谢任何帮助,谢谢!


replies=[] 

non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)  
for full_tweets in tweepy.Cursor(api.user_timeline,screen_name=name,timeout=999999).items(10):
  for tweet in tweepy.Cursor(api.search,q='to:'+name,result_type='recent',timeout=999999).items(1000):
    if hasattr(tweet, 'in_reply_to_status_id_str'):
      if (tweet.in_reply_to_status_id_str==full_tweets.id_str):
        replies.append(tweet.text)
  print("Tweet :",full_tweets.text.translate(non_bmp_map))
  for elements in replies:
       print("Replies :",elements) 


【问题讨论】:

【参考方案1】:

试试这个:

tweet_id='xxxxxxxxxxxxx'
replies=[]
for tweet in tweepy.Cursor(api.search,q='to:'+name, result_type='recent', timeout=999999).items(1000):
    if hasattr(tweet, 'in_reply_to_status_id_str'):
        if (tweet.in_reply_to_status_id_str==tweet_id):
            replies.append(tweet)

with open('xxx', 'w') as f:
csv_writer = csv.DictWriter(f, fieldnames=('replies'))
csv_writer.writeheader()
for tweet in replies:
    row = 'replies': tweet.text.replace('\n',' ')
    csv_writer.writerow(row)

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。 仅代码答案不被视为良好做法。请考虑Explaining how this answers the question

以上是关于如何使用 tweepy 创建一个列表,其中包含对特定推文的所有回复?的主要内容,如果未能解决你的问题,请参考以下文章

Tweepy 提及时间线返回一个空列表

如何在 Python 上使用 Tweepy 创建 Twitter 线程

如何使用Tweepy创建一个pandas数据框?

使用 Tweepy 从用户 Twitter 关注者那里获取用户 ID 列表

如何避免使用 tweepy Twitter API 的速率限制?

使用 tweepy 获取用户整个 Twitter 时间线