如何使用Python解析来自所有URL的JSON?

2024-09-30 01:19:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个URL,如果我在浏览器上点击它们,它会给我以下JSON字符串-

下面是我的URL,假设它是URL-A

http://hostnameA:1234/Service/statistics?%24format=json

下面是我的JSON字符串-

^{pr2}$

所以像上面的URL-A,我有大约5个url,这也给了我相同的JSON字符串,但是其中的dataCount计数可能不是零。在

现在我要做的是,我需要编写一个Python脚本,它可以扫描所有5个URL,然后解析JSON字符串,从中提取dataCount及其计数。它应该每隔几秒钟就运行一次来扫描URL然后解析它。在

下面是我的网址

URL-A       http://hostnameA:1234/Service/statistics?%24format=json
URL-B       http://hostnameB:1234/Service/statistics?%24format=json
URL-C       http://hostnameC:1234/Service/statistics?%24format=json
URL-D       http://hostnameD:1234/Service/statistics?%24format=json
URL-E       http://hostnameE:1234/Service/statistics?%24format=json

我想在控制台上看到的数据是这样的,这里dataCount是实际的数字

hostnameA - dataCount
hostnameB - dataCount
hostnameC - dataCount
hostnameD - dataCount
hostnameE - dataCount

这可以用Python实现吗?在

更新:-

这就是我试过的-

import urllib, json
url = "http://hostnameA:1234/Service/statistics?%24format=json"
response = urllib.urlopen(url);
data = json.loads(response.read())
print data

但是如何对其他5个URL做同样的事情,并且每10秒扫描一次,并且从中提取数据量呢?在


Tags: 字符串jsonhttpurlservice计数statisticsdatacount
1条回答
网友
1楼 · 发布于 2024-09-30 01:19:57
import requests
from time import sleep

def get_data_count(url):
    try:
        req = requests.get(url)
    except requests.ConnectionError:
        return 'could not get page'

    try:
        return int(req.json['statistics']['dataCount'])
    except TypeError:
        return 'field not found'
    except ValueError:
        return 'not an integer'

def main():
    urls = [
        ('hostnameA', 'http://hostnameA:1234/Service/statistics?%24format=json'),
        ('hostnameA', 'http://hostnameB:1234/Service/statistics?%24format=json'),
        ('hostnameA', 'http://hostnameC:1234/Service/statistics?%24format=json'),
        ('hostnameA', 'http://hostnameD:1234/Service/statistics?%24format=json'),
        ('hostnameA', 'http://hostnameE:1234/Service/statistics?%24format=json')
    ]

    while True:
        print('')
        for name, url in urls:
            res = get_data_count(url)
            print('{name} - {res}'.format(name=name, res=res))
        sleep(10.)

if __name__=="__main__":
    main()

编辑:针对AKIWEB:

在Windows 7 x64上运行带有请求0.13.2的Python 2.7.6:

^{pr2}$

是的,我很确定。在

相关问题 更多 >

    热门问题