使用 Twitter API 获取 Twitter 用户名和关注者数量
Get Twitter username and number of followers with Twitter API
我想用 Twitter API 按关键字抓取 Twitter。
我正在使用 Twitter 搜索 API。
query = 'football'
tweet_fields = "author_id,created_at,text,public_metrics,possibly_sensitive,source,lang"
max_results = "50"
#define search twitter function
headers = {"Authorization": "Bearer {}".format(BEARER_TOKEN)}
url = "https://api.twitter.com/2/tweets/search/recent?query={}&tweet.fields={}&max_results={}".format(query, tweet_fields, max_results)
response = requests.request("GET", url, headers=headers)
status_code = response.status_code
print("Response Status Code:", status_code)
if response.status_code != 200:
raise Exception(response.status_code, response.text)
else:
pass
#print(response.json())
twitter_search_data = response.json()['data']
twitter_response = []
for data in twitter_search_data:
print(data)
我取得了不错的成绩,但我也想取得 author_username
。
现在我只能得到 author_id
我试图将其添加到我的 API link 但我没有得到这些结果:
expansions=author_id&user.fields={}
user_fields = "description,username"
url = "https://api.twitter.com/2/tweets/search/recent?query={}&tweet.fields={}&expansions=author_id&user.fields={}&max_results={}".format(query, tweet_fields, user_fields, max_results)
这是示例结果:
{'possibly_sensitive': False, 'source': 'Twitter for Android', 'lang': 'en', 'public_metrics': {'retweet_count': 1, 'reply_count': 0, 'like_count': 0, 'quote_count': 0}, 'created_at': '2021-10-05T12:23:05.000Z', 'id': '1445363916457005058', 'text': 'RT @COiNSTANTIN1: @MEXC_Global @PolkaExOfficial Check out @MiniFootballBsc We are bringing together the football and crypto community.\n⚽️Fa…', 'author_id': '1444275133854715912'}
有没有办法将一些东西添加到我的 Twitter API 以便我可以获得:
1.author 用户名
2.author 姓名
作者的 3.number 关注者
作者 4.number 的追随者
您的代码已接近您的需求,但您通过扩展请求的用户信息实际上是在名为 includes
的第二个数组中传送的;你错过了,因为你的代码只打印 data
数组中的每个值。
如果您想要指标(关注者数量/每个用户的关注者数量),您需要在查询中添加一个额外的用户字段:
user_fields = "description,username,public_metrics"
然后,您可以单独列出 includes
,或者进行一些匹配以将用户对象与匹配的推文结合起来。最简单的做法是:
print(response.json()['data'])
print(response.json()['includes'])
您可以通过检查推文对象中的 author_id
与用户对象中的 id
值来匹配用户与推文数据。
还有一些工具和库可以帮助您自动执行此操作,例如,最新版本的 twarc
可以将这些数据“扁平化”为单个对象。
我想用 Twitter API 按关键字抓取 Twitter。 我正在使用 Twitter 搜索 API。
query = 'football'
tweet_fields = "author_id,created_at,text,public_metrics,possibly_sensitive,source,lang"
max_results = "50"
#define search twitter function
headers = {"Authorization": "Bearer {}".format(BEARER_TOKEN)}
url = "https://api.twitter.com/2/tweets/search/recent?query={}&tweet.fields={}&max_results={}".format(query, tweet_fields, max_results)
response = requests.request("GET", url, headers=headers)
status_code = response.status_code
print("Response Status Code:", status_code)
if response.status_code != 200:
raise Exception(response.status_code, response.text)
else:
pass
#print(response.json())
twitter_search_data = response.json()['data']
twitter_response = []
for data in twitter_search_data:
print(data)
我取得了不错的成绩,但我也想取得 author_username
。
现在我只能得到 author_id
我试图将其添加到我的 API link 但我没有得到这些结果:
expansions=author_id&user.fields={}
user_fields = "description,username"
url = "https://api.twitter.com/2/tweets/search/recent?query={}&tweet.fields={}&expansions=author_id&user.fields={}&max_results={}".format(query, tweet_fields, user_fields, max_results)
这是示例结果:
{'possibly_sensitive': False, 'source': 'Twitter for Android', 'lang': 'en', 'public_metrics': {'retweet_count': 1, 'reply_count': 0, 'like_count': 0, 'quote_count': 0}, 'created_at': '2021-10-05T12:23:05.000Z', 'id': '1445363916457005058', 'text': 'RT @COiNSTANTIN1: @MEXC_Global @PolkaExOfficial Check out @MiniFootballBsc We are bringing together the football and crypto community.\n⚽️Fa…', 'author_id': '1444275133854715912'}
有没有办法将一些东西添加到我的 Twitter API 以便我可以获得: 1.author 用户名 2.author 姓名 作者的 3.number 关注者 作者 4.number 的追随者
您的代码已接近您的需求,但您通过扩展请求的用户信息实际上是在名为 includes
的第二个数组中传送的;你错过了,因为你的代码只打印 data
数组中的每个值。
如果您想要指标(关注者数量/每个用户的关注者数量),您需要在查询中添加一个额外的用户字段:
user_fields = "description,username,public_metrics"
然后,您可以单独列出 includes
,或者进行一些匹配以将用户对象与匹配的推文结合起来。最简单的做法是:
print(response.json()['data'])
print(response.json()['includes'])
您可以通过检查推文对象中的 author_id
与用户对象中的 id
值来匹配用户与推文数据。
还有一些工具和库可以帮助您自动执行此操作,例如,最新版本的 twarc
可以将这些数据“扁平化”为单个对象。