はじめに
以下,実質2つの質問になっていますが,どちらか片方に答えていただけると幸いです.
特に,後半の質問に答えていただけるとたいへん助かります.
前提・実現したいこと1
機械学習のためにTwitterからリプライ関係にあるツイートペアを取得したいと思っています.あるリプライツイートとそのリプライ先のツイートのペアを取得したいと考えています.
TwitterAPIの知識はとても浅く,リファレンスの解読に試みてはいるもののよくわからず,既存のソースコードに頼っているのが現状です.
発生している問題・エラーメッセージ
リプライ先のツイートの取得方法がわかりません.
{'errors': [{'code': 215, 'message': 'Bad Authentication data.'}]}
ツイートをjson形式のデータで取得しようとすると上記の形式になってしまい,正しく取得できません.また,httpリクエストのエラー[400]となっています.
該当のソースコード1:ツイートIDからツイートを取得する
Python
1# -*- coding: utf-8 -*- 2from requests_oauthlib import OAuth1Session, OAuth1 3import json 4import requests 5import urllib 6import sys 7import io 8 9consumer_key = "xxx" 10consumer_key_secret = "xxx" 11access_token = "xxx" 12access_token_secret = "xxx" 13 14sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') 15 16url = "https://api.twitter.com/1.1/statuses/show.json?id=1050318723058298882" 17auth = OAuth1(consumer_key, consumer_key_secret, 18 access_token, access_token_secret) 19response = requests.get(url) 20json_data = response.json() 21print(json_data) 22
試したこと
上記のコードでは,事前にリプライツイートを取得し,そこから得たリプライ先のツイートのツイートIDを用いてツイートを取得しようとしています.(要は,ツイートIDからツイートを取得することができない状況にいます)
このコードは GET statuses/show/:id - ツイートを個別に取得する(https://syncer.jp/Web/API/Twitter/REST_API/GET/statuses/show/id/)を参考に書きました.
各keyが正しいかについては,事前にリプライツイートを収集する段階においては同じkeyで正しく動作することを確認しています.リクエスト数の制限に引っかかっていないことも確認しています.
考えられることとしては,TwitterAPIの仕様変更によりこの形式のリクエストができなくなったのではないか?と考えています.どうでしょうか.
前提・実現したいこと2
また, 機械学習に利用するデータとしてツイートを収集していますが,上記の方法では15分間に180ツイートしかチェックできずまともな量のデータが集められません..
そこで,WebAPIを叩いてhttps://twitter.com/{スクリーンネーム}/status/{ツイートID}をjson形式で取得してツイート本文を取得しようと考えました.
発生している問題・エラーメッセージ
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
該当のソースコード2:リプライ先のツイートを取得する
Python
1# -*- coding: utf-8 -*- 2import json 3import requests 4import urllib 5 6url = " https://twitter.com/chisapita/status/1050318723058298882" 7response = urllib.request.urlopen(url) 8rr = response.read() 9json_txt = str(rr).replace("'", '"').replace('True', 'true').replace('False', 'false') 10data = json.loads(json_txt) 11
試したこと
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)について調べ,様々なコードを試しましたがエラーが消えることはありませんでした.
おそらく,何もわかっていないためurlの指定がおかしいのではないかと思っています.どのように書けばよいのでしょうか.
補足情報(FW/ツールのバージョンなど)
Python3.6.3

あなたの回答
tips
プレビュー