为特定的 json 元素轮询 python 中的 api
Polling an api in python for a specific json element
我正在请求来自 api 的数据,响应为 json。 json 内容一直在动态变化。我希望我的 python 脚本连续 运行 并查看 json 例如每 5 秒,直到给定的语句为真,这可能是给定的用户 ID 号出现在json 响应。
当存在用户 ID 号时,然后执行操作,例如打印用户 ID 和连接的用户名也在 json 响应中找到。
我一直在查看 polling documentation,但我不知道如何按照我想要的方式使用它。
我不想每 5 秒轮询 data['result']['page']['list']
['user_id']
,当 ['user_id']
为真时,然后打印连接到 user_id 的信息,例如 nick_name.
response = requests.post('https://website.com/api', headers=headers, data=data)
json_data = json.dumps(response.json(), indent=2)
data = json.loads(json_data)
userid = input('Input userID: ')
for ps in data['result']['page']['list']:
if userid == str(ps['user_id']):
print('Username: ' + ps['nick_name'])
print('UserID: ' + str(ps['user_id']))
简单的循环怎么样?
import time
found_occurrence = False
userid = input('Input userID: ')
while not found_occurrence:
response = requests.post('https://website.com/api', headers=headers, data=data)
json_res = response.json()
for ps in json_res['result']['page']['list']:
if userid == str(ps['user_id']):
print('Username: ' + ps['nick_name'])
print('UserID: ' + str(ps['user_id']))
found_occurrence = True
time.sleep(5)
如果你想要这个 运行 连续,你将无限循环(直到中断)并将事件记录到这样的文件中:
import logging
import time
import sys
logging.basicConfig(filename='app.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')
userid = input('Input userID: ')
try:
while True:
response = requests.post('https://website.com/api', headers=headers, data=data)
json_res = response.json()
for ps in json_res['result']['page']['list']:
if userid == str(ps['user_id']):
logging.info('Username: ' + ps['nick_name'])
logging.info('UserID: ' + str(ps['user_id']))
time.sleep(5)
except KeyboardInterrupt:
logging.info("exiting")
sys.exit()
我正在请求来自 api 的数据,响应为 json。 json 内容一直在动态变化。我希望我的 python 脚本连续 运行 并查看 json 例如每 5 秒,直到给定的语句为真,这可能是给定的用户 ID 号出现在json 响应。 当存在用户 ID 号时,然后执行操作,例如打印用户 ID 和连接的用户名也在 json 响应中找到。
我一直在查看 polling documentation,但我不知道如何按照我想要的方式使用它。
我不想每 5 秒轮询 data['result']['page']['list']
['user_id']
,当 ['user_id']
为真时,然后打印连接到 user_id 的信息,例如 nick_name.
response = requests.post('https://website.com/api', headers=headers, data=data)
json_data = json.dumps(response.json(), indent=2)
data = json.loads(json_data)
userid = input('Input userID: ')
for ps in data['result']['page']['list']:
if userid == str(ps['user_id']):
print('Username: ' + ps['nick_name'])
print('UserID: ' + str(ps['user_id']))
简单的循环怎么样?
import time
found_occurrence = False
userid = input('Input userID: ')
while not found_occurrence:
response = requests.post('https://website.com/api', headers=headers, data=data)
json_res = response.json()
for ps in json_res['result']['page']['list']:
if userid == str(ps['user_id']):
print('Username: ' + ps['nick_name'])
print('UserID: ' + str(ps['user_id']))
found_occurrence = True
time.sleep(5)
如果你想要这个 运行 连续,你将无限循环(直到中断)并将事件记录到这样的文件中:
import logging
import time
import sys
logging.basicConfig(filename='app.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')
userid = input('Input userID: ')
try:
while True:
response = requests.post('https://website.com/api', headers=headers, data=data)
json_res = response.json()
for ps in json_res['result']['page']['list']:
if userid == str(ps['user_id']):
logging.info('Username: ' + ps['nick_name'])
logging.info('UserID: ' + str(ps['user_id']))
time.sleep(5)
except KeyboardInterrupt:
logging.info("exiting")
sys.exit()