最近、Tweepy、特に api.user_timeline を使い始めました。私のスクリプトは、ユーザーからの一連のツイートをダウンロードし、Tweepy Status 呼び出しで入手できるさまざまな詳細のほとんどをテキスト ファイルに出力します。私の問題は、Twitter の小さな URL を逆にすることです。このサイトの回答を読みましたが、これに対処する正しい方法は、Twitter エンティティ内で「expanded_url」コマンドを使用することであり、それが私が行ったことです。これが私のコードです:
import tweepy
import codecs
auth = tweepy.OAuthHandler("xxx", "xxx")
auth.set_access_token("yyy", "yyy")
with codecs.open("file.txt", encoding='utf-8', mode='w+') as f:
api = tweepy.API(auth)
for status in tweepy.Cursor(api.user_timeline, "xxx", include_entities=True).items():
...
# Extracting info from the entities
for hashtag in status.entities['hashtags']:
f.write(format(hashtag['text']))
for url in status.entities['urls']:
f.write(format(url['expanded_url']))
問題は、これらの展開された URL が常に必要な完全な URL ではないことです。たとえば、問題のツイートのコードは結果として ' http://goo.gl/sOH17n ' となり、記事の元の Web サイトはまだ隠されています。urllib2 を使用して完全な URL を取得するコードのスニペットがありますが、2 つを組み合わせると、 「HTTPError: HTTP Error 403: Forbidden」が表示されます。これが動作しない私の試用版です(以前の部分と常に統合されているため、認証を通過しないという問題はありません)
import urllib2
for url in status.entities['urls']:
expanded_url=url['expanded_url']
fullurl= urllib2.urlopen(expanded_url)
f.write(format(fullurl.url))
それで、私の質問は、Tweepy 内で本当に完全な URL を見つける方法はありますか? そうでない場合、urllib2 との統合が機能しないのはなぜですか? 質問が些細なことのように思われる場合は申し訳ありませんが、この質問から抜け出す方法が見つからないようで、tweepy のドキュメントは大ざっぱです。
ご回答ありがとうございます。