0

私は Python を学んでおり、Twitter のストリーミング API を使い始めたいと思っています。を使用してページのコンテンツを読み取る非常に基本的なアプリケーションを構築する方法を知ってurllib2おり、過去にこれを成功させました。ただし、https://この特定の Twitter ストリーミング API が必要とする安全な接続は、urllib2 では機能しないようです。

次のリンクから JSON をフェッチしようとしました。https://stream.twitter.com/1.1/statuses/filter.json?locations=-122.75,36.8,-121.75,37.8

次のように記述します。

import urllib2
url = "https://stream.twitter.com/1.1/statuses/filter.json?locations=-122.75,36.8,-121.75,37.8"
print urllib2.urlopen(url).read()

ただし、トレースバックは、私が許可されていないことを示しています。これは、HTTPS SSL 接続が原因であると推測され、調査によってこれが裏付けられました。だから私の質問は、そのようなSSL接続を必要とするリンクからJSONを取得するための最良の方法は何だと思いますか? curl も試しましたが、エラー 401 しか返されません。

以下は、トレースバック全体です。

トレースバック (最後の最後の呼び出し): ファイル ""、1 行目、ファイル "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py"、126 行目、urlopen ファイル「/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py」、400行目、開いているファイル「/System/Library/Frameworks/Python.framework/Versions/2.7/lib」 /python2.7/urllib2.py"、513 行目、http_response ファイル "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py"、438 行目、エラー ファイル " /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py"、372 行目、_call_chain ファイル "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/ http_error_default urllib2 の python2.7/urllib2.py"、521 行目。HTTPError: HTTP エラー 401: 権限がありません

よろしくお願いします。

4

2 に答える 2

2

他の人が言及しているように、承認する必要があります。方法は次のとおりです。

Python で urllib2 を使用した Twitter API を参照してください。

import urllib2
import base64

request = urllib2.Request( 'https://stream.twitter.com...' )
request.add_header( 'Authorization', 'Basic ' + base64.b64encode( username + ':' + password ) )
response = urllib2.urlopen( request )
于 2012-11-13T05:06:35.633 に答える
1

承認していないのは SSL 接続ではなく、この呼び出しを行う前にシステムで明示的に承認していないことです。リクエストを行う前に、サーバーで何らかの認証を行う必要があります。

于 2012-11-13T05:00:53.900 に答える