Sie können die Twitter-Such-API verwenden, um auf Twitter nach Tweets zu suchen, aber Sie können nur nach den letzten 7 Tagen suchen **.
Verwenden Sie twitterscraper-rubin gem, um diese Einschränkung zu umgehen. twitterscraper-ruby kratzt Twitter direkt, sodass Sie ** jeden Tweet vom ersten Tag an, an dem Twitter startet **, durchsuchen können.
twitterscraper-ruby kratzt Twitter direkt, aber die Nutzungsbedingungen von Twitter verbieten das Scraping. Verwenden Sie es nur für die persönliche kleine Tweet-Sammlung.
Die Suchfunktion von Twitter deckt nicht alle Tweets ab. Darüber hinaus scheint es möglicherweise nicht möglich zu sein, gut nach japanischen Tweets zu suchen. Daher ist es nicht zum Sammeln aller Tweets geeignet.
Vergleichen wir die Ergebnisse bei Verwendung von twitterscraper-ruby und bei Verwendung der Twitter-Such-API.
Ich werde versuchen, am 1. Januar 2020 bis zu 1000 Tweets zu erhalten.
Gemfile
gem 'twitterscraper-ruby'
require 'twitterscraper'
#Es gibt eine Proxy-Funktion, um die Möglichkeit zu verringern, dass die IP gesperrt wird.
#Stattdessen ist es viel langsamer, also schalte ich den Proxy aus
client = Twitterscraper::Client.new(proxy: false)
tweets = client.query_tweets('Twitter', start_date: '2020-01-01', end_date: '2020-01-02', lang: 'ja', limit: 1000)
puts tweets.size
# => 1000
tweets.take(3).each { |t| puts t.created_at }
# => 2020-01-01 23:59:59 +0000
# => 2020-01-01 23:59:59 +0000
# => 2020-01-01 23:59:59 +0000
Ich habe genau 1000 Fälle. Ich habe andere Zahlen ausprobiert, aber es scheint, dass sie ein wenig überschreiten können.
Ich habe auch versucht, mithilfe der Twitter-Such-API Tweets mit demselben Datum abzurufen, konnte jedoch keine Tweets wie erwartet abrufen. Dies liegt daran, dass die Twitter-Such-API nur Tweets der letzten 7 Tage abrufen kann.
# https://github.com/sferik/twitter
client = Twitter::REST::Client.new
tweets = client.search('Twitter since:2020-01-01 until:2020-01-02', count: 100)
puts tweets.size
# => 0