LoginSignup
7
17

More than 5 years have passed since last update.

GetOldTweets-python 1週間以上前の過去ツイートを取得しちゃう#2

Last updated at Posted at 2018-03-29

Inrtoduction

はにおかさいです。

ツイッターで過去ツイートを分析したいと思ったのですが、過去のツイートを取得するすべをなかなか思いつきませんでした。日本語でググっても意図したものは発見せず。

そこで、Githubで検索してみました。すると

oldtweets

GetOldTweets-python

この二つを発見しました。
今回はこのうち2つの目のGetOldTweets-pythonを紹介します。

パッケージ説明

Tweet:特定のツイートについての情報を提供するモデルクラス(?)です。

id (str)
permalink (str)
username (str)
text (str)
date (date)
retweets (int)
favorites (int)
mentions (str)
hashtags (str)
geo (str)

TweetManager: ツイートのモデルを取得する手助けをするマネージャー

getTweets (TwitterCriteria): TwitterCriteriaのインスタンスを使用して取得したツイートのリストを返します。
TwitterCriteria: TweetManagerと一緒に使用する検索のオプション設定の集合。

setUsername (str): @なしのアカウント名
setSince (str. "yyyy-mm-dd"): 検索日時指定(年ー月ー日 から)
setUntil (str. "yyyy-mm-dd"): 検索日時指定(年ー月ー日 まで)
setQuerySearch (str): 検索窓
setTopTweets (bool): Trueの場合は、トップツイートのみが取得されます。
setNear(str): ツイートされたエリアを指定する。
setWithin (str): ツイートされた周辺からどれぐらい離れているか(例 15mi(マイル)).
setMaxTweets (int):設定なしや1より低いと全ツイートを取得。でなければその数のツイートを取得。
Main: 使い方の例

Exporter: "output_got.csv"ファイルにツイートを出力.

Setup

Python3と2があったので、Windows 10,Python 3.6.4で試しました。

git clone https://github.com/Jefferson-Henrique/GetOldTweets-python
cd GetOldTweets-python
#pip install -r requirements.txt ではなく
pip install lxml pyquery

Test

playground.py というのをつくってみて、遊んでみます。

playground.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import got3 as got
# ユーザー名でツイートを取得
tweetCriteria = got.manager.TweetCriteria().setUsername('chart_suken').setMaxTweets(1)
tweet = got.manager.TweetManager.getTweets(tweetCriteria)[0]

print(tweet.text)

# 検索でツイートを取得
tweetCriteria = got.manager.TweetCriteria().setQuerySearch('埼玉県').setSince("2015-05-01").setUntil(
    "2015-09-30").setMaxTweets(1)
tweet = got.manager.TweetManager.getTweets(tweetCriteria)[0]

print(tweet.text)

# ユーザー名、ツイートで取得
tweetCriteria = got.manager.TweetCriteria().setUsername("haniokasai").setSince("2017-09-10").setUntil(
    "2017-09-12").setMaxTweets(1)
tweet = got.manager.TweetManager.getTweets(tweetCriteria)[0]

print(tweet.text)

# 最近の15ツイートを取得
tweetCriteria = got.manager.TweetCriteria().setUsername("Fujiwaraizuho").setMaxTweets(21000)
tweet = got.manager.TweetManager.getTweets(tweetCriteria)
print(tweet)
for v in tweet:
    print(v.text)

# 最近の15ツイートを取得
tweetCriteria = got.manager.TweetCriteria().setUsername("zenypota").setTopTweets(True).setMaxTweets(5)
tweet = got.manager.TweetManager.getTweets(tweetCriteria)
print(tweet)
for v in tweet:
    print(v.text)

Result


C:\Users\hani>Z:\appdir\py\364\python.exe Z:/workdir/GetOldTweets-python/playground.py
【朗報】 青チャートが動画で解説されてて分かりすぎる件 「全例題」解説動画つきだから、どんどん理解 これで宿題が、捗るネ ▼まずはアプリをダウンロード▼ AppStore⇒ https://appsto.re/jp/zZZiab.i GooglePlay⇒ https://play.google.com/store/apps/details?id=jp.co.suken.libraryapp …pic.twitter.com/ph6ZakvxM6
I'm at ジョナサン 入間店 in 入間市, 埼玉県 https://www.swarmapp.com/c/2IWzmsltQPb
pe用ですからだめです
[]
[<got3.models.Tweet.Tweet object at 0x05DBE5B0>, <got3.models.Tweet.Tweet object at 0x05DBE5D0>, <got3.models.Tweet.Tweet object at 0x05DBE570>, <got3.models.Tweet.Tweet object at 0x051E49B0>, <got3.models.Tweet.Tweet object at 0x05A3DE70>]
[メンテナンス] ・詳細 サービス開始お知らせメール登録の停止 ・期間 今日~未定 ご迷惑をおかけしますがご協力をおねがいいた します。
ありがとうございます! 非常に支えになります!
@ 9werty60y からの寄付がありさらに賞金上乗せです! 1200ZNY + 2mona + 10ZNYとなりす! ありがとうございます!https://twitter.com/zenypota/status/974215515819319296 …
開発者のraspi0124さんがポケットマネーから追加で資金提供をしてくださり、賞金は1200ZNY + 2mona となりました!ありがとうございます!https://twitter.com/raspi0124/status/974219437384589312 …
1200 ZNY prize money was attached to this recruitment!

C:\Users\hani>

image.png
3000ツイートは余裕で取得できますね。待たされますけど。

私のしたかったことはこれです。前回の記事は忘れてください。

Query

image.png
Fujiwaraizuho くんのツイートのみがnullになります。配列が埋まってないし、無論何も取得されてない。エラーもないので原因がわからない。研究のメインテーマに使えない予感。

P.S.

2018/6/30 特定の人物(不快な画像の設定云々をしてる人?)に対して使えないことがあり、それは解決されないっぽいです。issue参照。 https://github.com/Jefferson-Henrique/GetOldTweets-python/issues/172

7
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
17