如何使用 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 创建一个列表,其中包含对特定推文的所有回复?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 上使用 Tweepy 创建 Twitter 线程
使用 Tweepy 从用户 Twitter 关注者那里获取用户 ID 列表