Python twitterapiv2如何获取所有tweet的列表而不是流式传输
我是Twitter API的新手,我只是在用python测试它。以下是我正在使用的代码(我从Twitter的Github获得):Python twitterapiv2如何获取所有tweet的列表而不是流式传输,python,twitter,twitterapi-python,Python,Twitter,Twitterapi Python,我是Twitter API的新手,我只是在用python测试它。以下是我正在使用的代码(我从Twitter的Github获得): 导入请求 导入操作系统 导入json def创建_头(承载_令牌): headers={“Authorization”:“Bearer{}.format(Bearer_token)} 返回标题 def get_规则(标头、承载_令牌): response=requests.get( "https://api.twitter.com/2/tweets/search/st
导入请求
导入操作系统
导入json
def创建_头(承载_令牌):
headers={“Authorization”:“Bearer{}.format(Bearer_token)}
返回标题
def get_规则(标头、承载_令牌):
response=requests.get(
"https://api.twitter.com/2/tweets/search/stream/rules,headers=headers
)
if response.status_代码!=200:
引发异常(
“无法获取规则(HTTP{}):{}”。格式(response.status_代码,response.text)
)
打印(json.dumps(response.json()))
返回response.json()
def delete_all_规则(标头、承载令牌、规则):
如果规则为无或“数据”不在规则中:
一无所获
ids=列表(映射(lambda规则:规则[“id”]、规则[“数据”]))
有效负载={“删除”:{“ids”:ids}
response=requests.post(
"https://api.twitter.com/2/tweets/search/stream/rules",
标题=标题,
json=有效负载
)
if response.status_代码!=200:
引发异常(
无法删除规则(HTTP{}):{}。格式(
response.status_代码,response.text
)
)
打印(json.dumps(response.json()))
def set_规则(标头、删除、承载_令牌):
#如果需要,您可以调整规则
示例规则=[
{“value”:“dog has:images”,“tag”:“dog pictures”},
{“value”:“cat has:images-grumpy”,“tag”:“cat pictures”},
]
有效负载={“添加”:示例_规则}
response=requests.post(
"https://api.twitter.com/2/tweets/search/stream/rules",
标题=标题,
json=有效载荷,
)
if response.status_代码!=201:
引发异常(
无法添加规则(HTTP{}):{}。格式(response.status_代码,response.text)
)
打印(json.dumps(response.json()))
def get_流(标头、集合、承载令牌):
response=requests.get(
"https://api.twitter.com/2/tweets/search/stream,headers=headers,stream=True,
)
打印(响应状态\ U代码)
if response.status_代码!=200:
引发异常(
无法获取流(HTTP{}):{}。格式(
response.status_代码,response.text
)
)
对于响应中的响应行。iter\u行()
如果响应_行:
json\u response=json.loads(response\u行)
to_be_parsed=json.dumps(json_响应,缩进=4,排序键=True)
a=json.load(待解析)
打印(a[“数据”][“文本”])
def main():
持票人令牌=“”
头=创建头(承载令牌)
规则=获取规则(头、承载令牌)
delete=删除所有规则(头、承载令牌、规则)
set=set_规则(头、删除、承载_令牌)
获取\u流(标头、集合、承载\u令牌)
如果名称=“\uuuuu main\uuuuuuuu”:
main()
我想使用我在情绪分析项目中得到的tweet,那么有没有什么方法可以根据某个关键字和某个时间范围获得tweet列表,而不是使用此代码获得的恒定流(有点像getoldtweets3库)?提前感谢您的帮助。访问Twitter API有两种主要格式:
- 实时(流媒体):这是你建立连接的地方,并持续监听之后发生的一切
- 历史(RESTful):您可以在这里查询当前或过去发生的内容,然后停止查询
GetOldTweets库使用网络抓取来获取数据,这正式违反了Twitter的服务条款。最好使用官方API,这是一种受支持的访问方法。不客气!如果您希望在特定的API问题上获得更多支持,Twitter API社区位于
import requests
import os
import json
def create_headers(bearer_token):
headers = {"Authorization": "Bearer {}".format(bearer_token)}
return headers
def get_rules(headers, bearer_token):
response = requests.get(
"https://api.twitter.com/2/tweets/search/stream/rules", headers=headers
)
if response.status_code != 200:
raise Exception(
"Cannot get rules (HTTP {}): {}".format(response.status_code, response.text)
)
print(json.dumps(response.json()))
return response.json()
def delete_all_rules(headers, bearer_token, rules):
if rules is None or "data" not in rules:
return None
ids = list(map(lambda rule: rule["id"], rules["data"]))
payload = {"delete": {"ids": ids}}
response = requests.post(
"https://api.twitter.com/2/tweets/search/stream/rules",
headers=headers,
json=payload
)
if response.status_code != 200:
raise Exception(
"Cannot delete rules (HTTP {}): {}".format(
response.status_code, response.text
)
)
print(json.dumps(response.json()))
def set_rules(headers, delete, bearer_token):
# You can adjust the rules if needed
sample_rules = [
{"value": "dog has:images", "tag": "dog pictures"},
{"value": "cat has:images -grumpy", "tag": "cat pictures"},
]
payload = {"add": sample_rules}
response = requests.post(
"https://api.twitter.com/2/tweets/search/stream/rules",
headers=headers,
json=payload,
)
if response.status_code != 201:
raise Exception(
"Cannot add rules (HTTP {}): {}".format(response.status_code, response.text)
)
print(json.dumps(response.json()))
def get_stream(headers, set, bearer_token):
response = requests.get(
"https://api.twitter.com/2/tweets/search/stream", headers=headers, stream=True,
)
print(response.status_code)
if response.status_code != 200:
raise Exception(
"Cannot get stream (HTTP {}): {}".format(
response.status_code, response.text
)
)
for response_line in response.iter_lines():
if response_line:
json_response = json.loads(response_line)
to_be_parsed = json.dumps(json_response, indent=4, sort_keys=True)
a = json.loads(to_be_parsed)
print(a['data']['text'])
def main():
bearer_token = '<BEARER_TOKEN>'
headers = create_headers(bearer_token)
rules = get_rules(headers, bearer_token)
delete = delete_all_rules(headers, bearer_token, rules)
set = set_rules(headers, delete, bearer_token)
get_stream(headers, set, bearer_token)
if __name__ == "__main__":
main()