質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

3回答

2863閲覧

PythonによるTwitter API利用時のエラー

postofu

総合スコア11

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2016/01/21 07:41

編集2022/01/12 10:55

Enthought Canopy(Pythonのデータ分析用ディストリビューション)に付属するIPython Notebookで
twitterのAPIにアクセスし、トレンド情報の取得を行おうとしているのですが、以下のようなエラーが
発生してしまい、思うような実行結果が得られていません。
ソースコードとエラーメッセージは以下のとおりです。

Python

1import twitter 2 3#データ保護の観点からキーは伏せますが、ここが合ってるのはテスト済みです。 4CONSUMER_KEY = '####' 5CONSUMER_SECRET = '####' 6OAUTH_TOKEN = '####' 7OAUTH_TOKEN_SECRET = '####' 8 9auth = twitter.oauth.OAuth(OAUTH_TOKEN, OAUTH_TOKEN_SECRET, CONSUMER_KEY, CONSUMER_SECRET) 10twitter_api = twitter.Twitter(auth=auth) 11 12world_woe_id = 1 13world_trends = twitter_api.trends.place(_id=world_woe_id) 14print world_trends

これを実行すると、

URLError Traceback (most recent call last) /home/ozakix/sources/tw/tw_test2.py in <module>() 10 11 world_woe_id = 1 ---> 12 us_trends = twitter_api.trends.place(_id=world_woe_id) 13 print us_trends /home/ozakix/Documents/code/Canopy_64bit/User/lib/python2.7/site-packages/twitter/api.pyc in __call__(self, **kwargs) 310 return self._handle_response_with_retry(req, uri, arg_data, _timeout) 311 else: --> 312 return self._handle_response(req, uri, arg_data, _timeout) 313 314 def _handle_response(self, req, uri, arg_data, _timeout=None): /home/ozakix/Documents/code/Canopy_64bit/User/lib/python2.7/site-packages/twitter/api.pyc in _handle_response(self, req, uri, arg_data, _timeout) 317 kwargs['timeout'] = _timeout 318 try: --> 319 handle = urllib_request.urlopen(req, **kwargs) 320 if handle.headers['Content-Type'] in ['image/jpeg', 'image/png']: 321 return handle /home/ozakix/Tools/Canopy/appdata/canopy-1.6.1.3253.rh5-x86_64/lib/python2.7/urllib2.pyc in urlopen(url, data, timeout, cafile, capath, cadefault, context) 152 else: 153 opener = _opener --> 154 return opener.open(url, data, timeout) 155 156 def install_opener(opener): /home/ozakix/Tools/Canopy/appdata/canopy-1.6.1.3253.rh5-x86_64/lib/python2.7/urllib2.pyc in open(self, fullurl, data, timeout) 429 req = meth(req) 430 --> 431 response = self._open(req, data) 432 433 # post-process response /home/ozakix/Tools/Canopy/appdata/canopy-1.6.1.3253.rh5-x86_64/lib/python2.7/urllib2.pyc in _open(self, req, data) 447 protocol = req.get_type() 448 result = self._call_chain(self.handle_open, protocol, protocol + --> 449 '_open', req) 450 if result: 451 return result /home/ozakix/Tools/Canopy/appdata/canopy-1.6.1.3253.rh5-x86_64/lib/python2.7/urllib2.pyc in _call_chain(self, chain, kind, meth_name, *args) 407 func = getattr(handler, meth_name) 408 --> 409 result = func(*args) 410 if result is not None: 411 return result /home/ozakix/Tools/Canopy/appdata/canopy-1.6.1.3253.rh5-x86_64/lib/python2.7/urllib2.pyc in https_open(self, req) 1238 def https_open(self, req): 1239 return self.do_open(httplib.HTTPSConnection, req, -> 1240 context=self._context) 1241 1242 https_request = AbstractHTTPHandler.do_request_ /home/ozakix/Tools/Canopy/appdata/canopy-1.6.1.3253.rh5-x86_64/lib/python2.7/urllib2.pyc in do_open(self, http_class, req, **http_conn_args) 1195 except socket.error, err: # XXX what error? 1196 h.close() -> 1197 raise URLError(err) 1198 else: 1199 try: URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)>

こうなります。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

anozon

2016/01/21 09:50 編集

TYPO: print world_trends -> print us_trends
postofu

2016/01/21 10:00

修正しました、ありがとうございます。
guest

回答3

0

tweepy というmoduleを使うと特にエラーが出ることもなくPythonからTwitter APIを試すことができました。もし内部モジュールの問題っぽいならお試しください。

投稿2016/04/13 02:44

studio_graph

総合スコア43

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

CERTIFICATE_VERIFY_FAILED
とのことなのでSSL界隈の設定が誤っているんじゃないかなと思います。

SSL証明書ツリーを正しく構築するのが本来筋ですが、
とりあえず、このへんで回避してみてはどうでしょう。
SSL証明書が正しくないサイトに対してPythonでアクセスする

投稿2016/04/08 11:23

matobaa

総合スコア2493

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

postofu

2016/04/14 01:13

回答ありがとうございます。 書き忘れていましたが、各種設定は全てオライリーの「ソーシャルデータマイニング」に書かれている通りの値で埋めたので、そこに誤りはないはずなのですが…。
guest

0

解決はわかりませんでしたが

canopy 無しで用意した ipython notebook では問題なく動作したので Canopy 関連が怪しいと思います
参考になれば幸いです

投稿2016/01/21 10:22

anozon

総合スコア662

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

postofu

2016/01/21 13:26

回答ありがとうございます。 debianのbashから起動したIPythonで同じソースを起動したところ、やはり同じURLエラーを吐きました。。これはもはやApp側の問題なのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問