我想获得一个通过Twitter API收藏特定状态的用户列表。 我可以看到每个状态都有它所获得的收藏数量,但我需要获得最喜欢的用户列表。
有关如何实现这一目标的任何想法?
答案 0 :(得分:7)
这是在Python 2.7.x
中实现的变通方法或黑客攻击:
import urllib2
import re
def get_user_ids_of_post_likes(post_id):
try:
json_data = urllib2.urlopen('https://twitter.com/i/activity/favorited_popup?id=' + str(post_id)).read()
found_ids = re.findall(r'data-user-id=\\"+\d+', json_data)
unique_ids = list(set([re.findall(r'\d+', match)[0] for match in found_ids]))
return unique_ids
except urllib2.HTTPError:
return False
# Example:
# https://twitter.com/golan/status/731770343052972032
print get_user_ids_of_post_likes(731770343052972032)
# ['13520332', '416273351', '284966399']
#
# 13520332 +> @TopLeftBrick
# 416273351 => @Berenger_r
# 284966399 => @FFrink
答案 1 :(得分:-1)
对于使用Python 3的用户,您需要解码HTML字符串,以避免出现TypeError。
import urllib
import re
def get_user_ids_of_post_likes(post_id):
try:
json_data = urllib.request.urlopen('https://twitter.com/i/activity/favorited_popup?id=' + str(post_id)).read()
json_data = json_data.decode('utf-8')
found_ids = re.findall(r'data-user-id=\\"+\d+', json_data)
unique_ids = list(set([re.findall(r'\d+', match)[0] for match in found_ids]))
return unique_ids
except urllib.request.HTTPError:
return False
# Example:
# https://twitter.com/golan/status/731770343052972032
print get_user_ids_of_post_likes(731770343052972032)
# ['13520332', '416273351', '284966399']
#
# 13520332 +> @TopLeftBrick
# 416273351 => @Berenger_r
# 284966399 => @FFrink