私は現在、Bit.ly リンクのクリック数を取得して返すスクリプトを持っています。まず、Bitly URL からデータを収集して読み取ることから始めますが、これは正しく行っているようです。
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
。これを行う最善の方法は、2 つの分割を行うことだと考えました。
src=src.split('clicks": ')
src = str(src[1])
clicks = src.split('}, "status')
clicks = clicks[0]
これを実行すると、クリック数は最終的に正しい数になり、それだけになります。ただし、ターミナルは行の IndexError を返しますsrc = str(src[1])
。を削除しようとしました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
前もって感謝します。