我目前有一个脚本,应该获取并返回Bit.ly链接所具有的点击次数。我开始通过收集和阅读来自Bitly网址的数据,我似乎做得很对。为什么我得到一个IndexError(看似)正确拆分的字符串?
bitly_data = "https://api-ssl.bitly.com/v3/link/clicks?access_token=ACCESS_TOKEN&link=http://bit.ly/"+link
src = urllib2.urlopen(bitly_data)
src = src.read()
当link
是TY8lnd
这样的东西,src
是一个字符串,看起来像
{"status_code": 200, "data": {"units": -1, "tz_offset": -4, "unit": "day", "link_clicks": 535}, "status_txt": "OK"}
我现在要分析此字符串得到公正link_clicks
后的数值。我认为做这件事的最好方法是分两次。
src=src.split('clicks": ')
src = str(src[1])
clicks = src.split('}, "status')
clicks = clicks[0]
当我运行这个时,点击确实最终等于正确的数字,只有这个数字。但是,终端返回src = str(src[1])
行的IndexError。我试图摆脱str()
但这没有效果。不知道为什么我得到这个错误,尽管最终值被纠正,我们将不胜感激。
这里是全部回溯:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1701, in __call__
return self.wsgi_app(environ, start_response)
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1689, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1360, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1358, in full_dispatch_request
rv = self.dispatch_request()
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1344, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/Zach/Dropbox/bitly/bit.py", line 35, in settings
src = str(src[1])
IndexError: list index out of range
预先感谢您。
谢谢你的快速帮帮我!然而,按照你的指示,我似乎正在得到一个TypeError:''TypeError:'NoneType'对象不是可以下载的,尽管同样返回正确的点击次数。 – zch
提供正在执行此操作的代码。如果你得到了一个'TypeError'但仍然得到一个值,那么你正在运行多个请求或其他奇怪的事情。如果你有'None'来代替有效的对象,那么你就不会有点击。 – sberry
如果你在resp_object中得到None,那么你可以明确地检查它,或者像上面的最后一行更新那样更新,并且None情况以及缺少'data'或'link_clicks'应该至少显示'0 '因此。 – sberry