Подтвердить что ты не робот

Как я могу получить твиты старше недели (используя tweepy или другие библиотеки python)

Я пытался понять это, но это действительно расстраивает. Я пытаюсь получить твиты с определенным хэштагом (большое количество твитов) с помощью Tweepy. Но это не возвращается более чем на одну неделю. Мне нужно вернуться не менее двух лет в течение нескольких месяцев. Возможно ли это, если да, то как?

Только для проверки здесь мой код

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')])
4b9b3361

Ответ 1

Вы не можете использовать API поиска twitter для сбора твитов два года назад. В документах:

Также обратите внимание, что результаты поиска на twitter.com могут возвращать исторические результаты, в то время как API поиска обычно обслуживает только твиты с прошлой недели. - Документация по Twitter.

Если вам нужен способ получить старые твиты, вы можете получить их от отдельных пользователей, потому что сбор твитов из них ограничен числом, а не временем (так что во многих случаях вы можете вернуться на несколько месяцев или лет). Третий сторонний сервис, который собирает твиты типа Topsy, может быть полезен и в вашем случае (закрыт с июля 2016 года, но другие службы существуют).

Ответ 2

Как вы заметили, у Twitter API есть некоторые ограничения, я внедрил код, который делает это, используя ту же стратегию, что и Twitter, работающий над браузером. Взгляните, вы можете получить самые старые твиты: https://github.com/Jefferson-Henrique/GetOldTweets-python

Ответ 3

Нашел один код, который поможет получить старые твиты. https://github.com/Jefferson-Henrique/GetOldTweets-python

Чтобы получить старые твиты, запустите следующую команду в каталоге, где извлечен репозиторий кода.

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

И он возвратил файл 'output_got.csv' с 1000 твитами в течение вышеуказанных дней с вашим ключевым словом

Для этого вам нужно установить модуль "pyquery" для работы

PS: вы можете изменить файл кода на языке python Exporter.py, чтобы получить больше атрибутов tweet в соответствии с вашими требованиями.

Ответ 4

Обновление 2018 года: У Twitter есть API-интерфейсы Premium Search, которые могут возвращать результаты с начала времени (2006):

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

Поиск твитов: 30-дневная конечная точка → предоставляет твиты из предыдущих 30 дни.

Поиск твитов: конечная точка полного архива → обеспечивает полную и мгновенную доступ к твитам, датированным вплоть до первого Tweet в марте 2006.

С примером клиента Python: https://github.com/twitterdev/search-tweets-python

Ответ 5

используйте аргументы "с" и "до", чтобы настроить временные рамки. В настоящее время вы используете before_id, который должен соответствовать значениям идентификатора twitter (а не датам):

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

Ответ 6

Как отмечали другие, API Twitter имеет ограничение по дате, но не фактический расширенный поиск, реализованный на twitter.com. Таким образом, решение заключается в использовании Python-обертки для Selenium или PhantomJS для итерации через конечную точку twitter.com. Вот реализация с использованием Selenium, которую кто-то разместил на Github: https://github.com/bpb27/twitter_scraping/

Ответ 7

Используйте этот код, я написал это некоторое время назад, и мне пришлось изменить некоторые биты в соответствии с вашим описанием

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