我有一个URL,如果我在浏览器上点击它们,它会给我以下JSON字符串-
下面是我的URL,假设它是URL-A
,我有大约三个URL-
http://hostnameA:1234/Service/statistics?%24format=json
下面是我的JSON字符串-
^{pr2}$现在我已经编写了一个Python脚本,它扫描我所有的3个URL,然后解析JSON字符串,从中提取dataCount
的值。它应该每隔几秒钟就运行一次来扫描URL然后解析它。在
下面是我的网址
hostnameA http://hostnameA:1234/Service/statistics?%24format=json
hostnameB http://hostnameB:1234/Service/statistics?%24format=json
hostnameC http://hostnameC:1234/Service/statistics?%24format=json
我想在控制台上看到的数据是这样的,这里dataCount
将是实际的数字
hostnameA - dataCount
hostnameB - dataCount
hostnameC - dataCount
我有下面的python脚本,它在我的cygwin本地运行得很好,但是如果我在我公司生产的ubuntu机器上运行它,它会给出一个错误-
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:
# this line is giving an error
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'),
('hostnameB', 'http://hostnameB:1234/Service/statistics?%24format=json'),
('hostnameC', 'http://hostnameC: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()
以下是我得到的错误-
AttributeError: 'Response' object has no attribute 'json'
我使用的是python2.7.3和ubuntu12.04,我运行的requests
版本是0.8.2
(我想这就是问题所在)。在
在任何情况下,除了requests
之外,有没有其他方法可以重写上面的脚本,即从服务器获取数据的部分,我们可以正确地使用其他库?在
因为我想,我不能更新这个包,因为它是我们的产品ubuntu服务器,所以我需要找到其他方法来做这个。在
您仍然可以使用
requests
,只是不依赖于response对象为您解码:版本0.8.2是一个古老的版本;您可以使用
^{pr2}$virtualenv
来创建一个位置,让您安装新版本:相关问题 更多 >
编程相关推荐