如何使用结构解析此数据?

时间:2016-03-28 12:40:32

标签: python fabric

我使用fabric执行scrapyd任务,服务器返回正在执行的任务的id,但我想在下面获取此代码并将所有id放入列表中,但是当我使用 r.status 时,出现错误:' _AttributeString'对象没有属性'状态' 错误,如何获取所有ID?代码打击:

@task
def stop_slave_machine(slave_ip = None):
    jobs_id = []
    with cd("/spider/distributed/wzws"):
        if not None:
            r = local("curl http://%s:%s/listjobs.json?project=WzwsSpider" % (slave_ip, scrapyd_port))              
            print(r.status)

并且服务器返回数据:



{"status": "ok", "running": [{"start_time": "2016-03-28 18:21:21.951943", "id": "d10eae6cf4ce11e5a6646cae8b23c5da", "spider": "wzws"}, {"start_time": "2016-03-28 18:21:26.945244", "id": "d11a47f4f4ce11e5a6646cae8b23c5da", "spider": "wzws"}, {"start_time": "2016-03-28 18:21:31.941162", "id": "d12320ccf4ce11e5a6646cae8b23c5da", "spider": "wzws"}, {"start_time": "2016-03-28 18:21:36.941122", "id": "d12975b2f4ce11e5a6646cae8b23c5da", "spider": "wzws"}, {"start_time": "2016-03-28 18:21:41.941010", "id": "d131096cf4ce11e5a6646cae8b23c5da", "spider": "wzws"}], "finished": [], "pending": [], "node_name": "XXXXXXX"}




1 个答案:

答案 0 :(得分:0)

这是一个JSON身体被归还。您可以使用python的json库将响应转换为python对象。从那里,您可以遍历“正在运行”列表,以便为每个列表提取id

这样的事情:

from json import loads

# turn r into a python object as long as r is a string (hence loads not load)
returned = loads(r)

# Make a list ids from a list comprehension where we pull out the value
# id from each item in the list 'running' from the object returned
ids = [ r["id"] for r in returned["running"] ]