我有一个URL,如果我在浏览器上点击它,它会给我下面的JSON字符串 -
以下是我的网址,假设它是URL-A
http://hostnameA:1234/Service/statistics?%24format=json
以下是我的JSON字符串 -
{
"description": "",
"statistics": {
"dataCount": 0,
}
}
与上面的URL-A
一样,我有大约5个网址,这也给了我相同的JSON字符串,但dataCount
计数可能不是零。
现在我应该做的是,我需要编写一个Python脚本,它可以扫描所有5个URL,然后再解析JSON String以从中提取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秒扫描一次并从中提取dataCount?
答案 0 :(得分:1)
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:
在Window 7 x64上使用请求0.13.2运行Python 2.7.6:
>>> requests.get('http://echo.jsontest.com/key/value/one/two').json
{u'key': u'value', u'one': u'two'}
>>> requests.get('http://echo.jsontest.com/key/value/one/two').json()
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
requests.get('http://echo.jsontest.com/key/value/one/two').json()
TypeError: 'dict' object is not callable
是的,我很确定。