web-dev-qa-db-ja.com

1週間以上前のツイートを取得するには(tweepyまたはその他のpythonライブラリ)を使用して)

私はこれを理解しようとしましたが、これは本当にイライラさせられます。 Tweepyを使用して特定のハッシュタグ付きのツイート(大量のツイート)を取得しようとしています。しかし、これは1週間以上前には戻りません。数か月間、少なくとも2年前に戻る必要があります。可能であれば、これは可能ですか?

ここでチェックするのは私のコードです

import tweepy
import csv

consumer_key = '####'
consumer_secret = '####'
access_token = '####'
access_token_secret = '####'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

# Open/Create a file to append data
csvFile = open('tweets.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile)


for Tweet in tweepy.Cursor(api.search,q="#ps4",count=100,\
                           lang="en",\
                           since_id=2014-06-12).items():
    print Tweet.created_at, Tweet.text
    csvWriter.writerow([Tweet.created_at, Tweet.text.encode('utf-8')])
31
MustiHakan

Twitter検索APIを使用して2年前のツイートを収集することはできません。ドキュメントごと:

また、Twitter.comの検索結果は過去の結果を返す場合がありますが、Search APIは通常、過去1週間のツイートのみを提供します。 - Twitterドキュメント

古いツイートを取得する方法が必要な場合は、個々のユーザーから取得することができます。それらからのツイートの収集は、時間ではなく数で制限されているためです(多くの場合、数か月または数年前に戻ることができます)。 Topsy のようなツイートを収集するサードパーティのサービスもあなたの場合に役立つかもしれません(2016年7月の時点でシャットダウンしますが、他のサービスが存在します)。

20
Luigi

Twitter APIにはいくつかの制限があることに気づいたように、ブラウザーで実行するTwitterと同じ戦略を使用してこれを行うコードを実装しました。最も古いツイートを取得できます: https://github.com/Jefferson-Henrique/GetOldTweets-python

古いツイートの取得に役立つコードを見つけました。 https://github.com/Jefferson-Henrique/GetOldTweets-python

古いツイートを取得するには、コードリポジトリが抽出されたディレクトリで次のコマンドを実行します。

python Exporter.py --querysearch 'keyword' --since 2016-01-10 --until 2016-01-15 --maxtweets 1000

そして、それはあなたのキーワードで上記の日に1000のツイートでファイル「output_got.csv」を返しました

これが機能するには、モジュール「pyquery」をインストールする必要があります

PS: 'Exporter.py' pythonコードファイルを変更して、要件に応じてさらにツイート属性を取得できます。

9
Shivangi Gupta

2018更新:Twitterには、時間の初め(2006)から結果を返すことができるプレミアム検索APIがあります。

https://developer.Twitter.com/en/docs/tweets/search/overview/premium#ProductPackages

ツイートの検索:30日間のエンドポイント→過去30日間のツイートを提供します。

ツイートの検索:フルアーカイブエンドポイント→2006年3月の最初のツイートまでさかのぼるツイートへの完全かつ即時のアクセスを提供します。

例ではPython client: https://github.com/twitterdev/search-tweets-python

3
Geordie

args "since"および "until"を使用して、タイムフレームを調整します。現在、Twitter ID値(日付ではなく)に対応するためのsince_idを使用しています。

for Tweet in tweepy.Cursor(api.search,
                           q="test",
                           since="2014-01-01",
                           until="2014-02-01",
                           lang="en").items():
1
RohitJ

他の人が指摘したように、Twitter APIには日付の制限がありますが、Twitter.comに実装されている実際の高度な検索にはありません。そのため、ソリューションはPythonのSeleniumまたはPhantomJSのラッパーを使用して、Twitter.comエンドポイントを反復処理することです。誰かがGithubに投稿したSeleniumを使用した実装を次に示します。 https://github.com/bpb27/Twitter_scraping/

1
Dan Nguyen